如果派生类定义了复制构造函数,但没有显式调用基类的复制构造函数,是会隐式调用基类的默认构造函数(注意:不是复制,跟下面不同)。而如果派生类没有定义复制构造函数,只使用默认复制构造函数,则会使用基类的默认复制构造函数(注意:是复制),自己写两个类试下就看到结果了:
class A
{
public:
A(){printf("A Default\r\n");}
A(A&){printf("A Copy\r\n");}
A & operator=(const A & a){printf("A =\r\n");}
}
class B:public A
{
public:
B(){printf("B Default\r\n");}
B(B&){printf("B Copy\r\n");}
B & operator=(const B & b){printf("B =\r\n");
}
int main()
{
B b1;
B b2(b1);
return 0;
}