【发布时间】:2011-01-06 03:35:18
【问题描述】:
假设我有一个基类Person,并且我从基类Person 公开继承了一个类Teacher。
现在在主函数中我写了这样的东西
// name will be passed to the base class constructor and 17
// is for derived class constructor.
Teacher object(“name”,17) ;
Teacher object1=object; //call to copy constructor
现在我还没有为这两个类编写复制构造函数,当然会调用默认的复制构造函数。 Person 类的默认复制构造函数将首先调用基类的复制构造函数。
现在的问题是假设我只为基类编写复制构造函数,发生的情况是,派生类的默认复制构造函数将调用我编写的复制构造函数。
现在假设我为这两个类编写了复制构造函数。现在派生类(即教师)的复制构造函数将调用基类的默认构造函数而不是复制构造函数,为什么?
只有派生类的默认拷贝构造函数才能自动调用基类的拷贝构造函数吗?
【问题讨论】:
-
没有“默认复制构造函数”之类的东西。但是是的,编译器生成的复制构造函数会调用基类的复制构造函数。
-
谢谢你,我明白了。