派生类未定义自己的构造函数,而是用默认构造函数,则构造时会自动调用显式声明的基类默认构造函数或者无须赋参数(全部参数都有缺省参数)的构造函数(这两个函数本身便不能共存),若没有上述函数且有自己声明的构造函数(此类函数因为需要参数所以不能被成功调用)则报错,若基类无显式声明的构造函数则调用隐藏的自动生成的默认构造函数。
派生类定义自己的构造函数,若不显式调用基类构造函数,则构造时会自动调用显式声明的基类默认构造函数或者无须赋参数(全部参数都有缺省参数)的构造函数(这两个函数本身便不能共存),若没有上述函数且有自己声明的构造函数(此类函数因为需要参数所以不能撤成功调用)则报错,若基类无显式声明的构造函数则调用隐藏的自动生成的默认构造函数。
注意:默认调用基类构造函数只对直接基类有效!
派生类未显式定义复制构造函数(即使用隐藏的默认复制构造函数),则派生类复制构造时将调用基类复制构造函数,若基类无显式定义的复制构造函数则调用隐藏的默认复制构造函数。
派生类显式定义复制构造函数,若不显式调用基类复制构造函数,则不论基类是否显示定义了复制构造函数,派生类只执行自己的复制构造函数。
派生类未显示定义赋值函数(即使用隐藏的默认赋值函数),则派生类赋值时将自动调用基类赋值函数,若基类无显式定义的赋值函数则调用隐藏的默认赋值函数。
派生类显示定义赋值函数,若不显示调用基类赋值函数,则不论基类是否显示定义了赋值函数,派生类只执行自己的赋值函数。
调用基类复制构造使用初始化列表,调用基类赋值操作调用类似AAA::operator=(bbb)。