[c++] 使用子类实例中的基类部分初始化另一个基类

可以使用 派生类实例 来初始化基类实例,此时会用派生类中的基类部分来初始化基类实例,派生类
部分将被忽略。

    注:上述操作仅仅在基类定义了 拷贝/赋值 构造的情况下可行,因为这种初始化
        实际上相当于调用了基类的 拷贝/赋值 构造。

class A{
public:
   A()=default;
   A(const A&);
   A& operator=(const A&);
}

class B:public A{
public:
   B()=default;
}

B b1;

A a1(b1);    //编译器会把 B 的引用 隐式转换成 A的引用,派生类向基类的 指针/引用 转换,
        //相当于调用基类的拷贝构造

A a2 = b1;      //相当于调用基类的赋值构造

猜你喜欢

转载自blog.csdn.net/ykun089/article/details/106985904