当基类中“显示定义了拷贝构造函数和赋值操作符时”
当派生类中“显示定义了拷贝构造函数和赋值操作符时”
如果派生类中的拷贝和赋值构造函数中没有“显示指定基类的拷贝和赋值构造函数”,即:派生类只是把自己的成员进行了赋值
这时需要手动调用基类的拷贝构造函数和赋值构造函数才行,基类的构造函数会自动调用的
#include <iostream>
using namespace std;
class A
{
public:
A(){}
A(A&){cout<<"A copy constructor"<<endl;}
};
class B:public A
{
public:
B(){}
B(B&b)
{
//A::A(b);注意这句加上和不加时输出的区别
cout<<"B copy constructor"<<endl;
}
};
int main()
{
B b;
B c=b;
}
派生类构造函数的任务应该包括3个部分:
(1) 对基类数据成员初始化;
(2) 对子对象数据成员初始化;
(3) 对派生类数据成员初始化。