假设我有一个基类“person”。并且我公开从基类“person”继承了一个类“student”。我没有为基类和派生类编写复制构造函数。现在假设我在主程序中编写:
main()
{
student sobj1("name", "computer science");
student sobj2=sobj1;
}
现在在第二行,将调用学生类的默认编译器生成的复制构造函数,但在执行之前,将调用基类的默认复制构造函数,该函数创建一个匿名对象并初始化它,然后控制权返回到学生类的复制构造函数,该函数初始化对象的学生部分。
这是我们不编写复制构造函数的情况下的演示。
现在假设我们为两个类都编写了复制构造函数,我已经测试了当我写下:
student sobj2=sobj1;
发生的情况是,这行代码调用了Student类的复制构造函数(成功执行),但此时基类的复制构造函数不会被调用(默认基类构造函数将被调用),我的问题是为什么?