本文主要总结一下继承关系下的构造析构调用原则:
- 子类对象在创建时会首先调用父类的构造函数
- 父类构造函数执行结束后,执行子类的构造函数
- 当父类的构造函数有参数时,需要在子类的初始化列表中显示调用
- 析构函数调用的先后顺序与构造函数相反
#includeusing namespace std; class Parent { public: Parent() { cout << "Parent().." << endl; a = 0; } Parent(int a) { cout << "Parent(int a).." << endl; this->a = a; } ~Parent() { cout << "~Parent()" << endl; } int a; }; class Child :public Parent{ public: //在子类调用构造函数的时候,一定会先调用父类构造 Child() { cout << "Child().." << endl; b = 0; } Child(int b) { cout << "Child(int).." << endl; this->b = b; } Child(int b, int a) :Parent(a){ cout << "Child(int ,int )" << endl; this->b = b; } ~Child() { cout << "~Child()" << endl; } void test() { cout << "b=" < 根据以上实验,可以验证调用原则。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)