用派生类创建基类对象

我有以下代码。

class A {
public:
    A() { cout << "A()" << endl; }
    void f() { cout << "A" << endl; }
};

class B : public A {
public:
    B() { cout << "B()" << endl; }
    void f() { cout << "B" << endl; }
    void ff() { cout << "ff()" << endl; }
};

int main()
{
    A a = B();
    B b;
    a = b;
}

如何调用 A a = B(); 将不同于 A a = A();? 为什么从派生类到基类可以转换?

解决方案:

当你做 A a = B();,复制类的构造函数 A 应在类的默认构造函数之后调用。B (注:编译器可能会使用 抄袭埃里森).

A(const A& other)
{

}

由于,类的对象 B 可以传递给类的复制构造函数 A允許,但你可能會遇到 对象切割.

如果你很想知道”如何将派生类对象传递给接受基类引用的方法?“,改为”。

  1. 是否可以通过引用派生类来传递一个以基类为参数的函数?

给TA打赏
共{{data.count}}人
人已打赏
解决方案

在 cloudformation 的 yaml 中的 json 中使用 Fn::ImportValue。

2022-5-13 4:00:31

解决方案

错误400,坏请求,Json解析错误。未识别标记'agama':在Android Retrofit与Spring Boot中期待('true'、'false'或'null')。

2022-5-13 4:00:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索