拷贝构造函数,构造函数

时间:2021-02-27 19:28:31

当基类中“显示定义了拷贝构造函数和赋值操作符时
当派生类中“显示定义了拷贝构造函数和赋值操作符时
如果派生类中的拷贝和赋值构造函数中没有“显示指定基类的拷贝和赋值构造函数”,即:派生类只是把自己的成员进行了赋值


这时需要手动调用基类的拷贝构造函数和赋值构造函数才行,基类的构造函数会自动调用的

#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) 对派生类数据成员初始化。