本文共 976 字,大约阅读时间需要 3 分钟。
如果一个构造函数没有任何参数,或者每个参数都带有默认值,则可称为默认构造函数。
如果没有自定义默认构造函数,则编译器会隐式地创建一个默认构造函数, 当需要使用时,就会进行定义。编译器定义的默认构造函数用来对类内部进行某种程度的初始化。它不会修改数据成员或者普通数据类型(例如数组,结构体等)。但是编译器会根据需要为默认构造函数生成代码。
当一个子类的基类拥有默认构造函数,或某个类中的成员对象拥有默认构造函数。则编译器必须生成一定的代码,来调用基类/嵌入类的默认构造函数。
#includeusing namespace std; class Base{public: // 编译器自动声明构造函数}; class A{public: // 用户自定义构造函数 A() { cout <<"A Constructor" << endl; } int size;}; class B : public A{ // 编译器会自定义B的默认构造函数, 并且生成代码来调用A的构造函数 // 注意:编译器不会初始化A的任何成员}; class C : public A{public: C() { // 用户自定义C的构造函数,编译器会生成代码来调用A的构造函数 cout <<"C Constructor" << endl; //注意:编译器不会初始化A的任何成员 }}; class D{public: D() { // 用户自定义D的构造函数 // 创建成员a时,编译器会生成代码来调用A的构造函数 cout <<"D Constructor" << endl; //注意:编译器不会初始化'a'的任何成员 } private: A a;}; int main(){ Base base; B b; C c; D d; return 0;}
输出:
A Constructor A Constructor C Constructor A Constructor D Constructor转载地址:http://aqeji.baihongyu.com/