第十一周阅读程序6:基类、派生类中构造函数、析构函数
2015-05-20 15:46
302 查看
问题及代码:
运行结果:
知识点总结:
可以看出 D继承于C,C继承于B;B和C类内分别 存在一个A对象作为数据成员。
所以在新建一个D对象时,先执行C的构造函数;
而C又需要先执行B的构造函数,此之前新建一个A对象,所以先执行A的构造函数;
B内执行构造函数之前,需要新建一个A对象,所以需要执行A的构造函数。
所以输出应该为 A B A C D
#include <iostream> using namespace std; class A { protected: int x; public: A(int x) { A::x=x; cout<<"class A"<<endl; } }; class B { private: A a1; public: B(int x):a1(x) { cout<<"class B"<<endl; } }; class C:public B { private: A a2; public: C(int x):B(x),a2(x) { cout<<"class C"<<endl; } }; class D:public C { public: D(int x):C(x) { cout<<"class D"<<endl; } }; int main() { D dobj(10); return 0; }
运行结果:
知识点总结:
可以看出 D继承于C,C继承于B;B和C类内分别 存在一个A对象作为数据成员。
所以在新建一个D对象时,先执行C的构造函数;
而C又需要先执行B的构造函数,此之前新建一个A对象,所以先执行A的构造函数;
B内执行构造函数之前,需要新建一个A对象,所以需要执行A的构造函数。
所以输出应该为 A B A C D
相关文章推荐
- 第十一周阅读程序5:基类与派生类的构造函数与析构函数
- 第十一周阅读程序4:基类、派生类中构造函数、析构函数执行过程
- 第十一周阅读程序1:继承与派生类的构造函数和析构函数
- 第十一周 阅读程序4 类的继承构造函数与析构函数调用的先后顺序
- 第二学期第四周 阅读程序理解构造函数和析构函数
- 第十一周 阅读程序 构造函数与虚构函数中继承执行先后
- 第4周课后实践·阅读程序-构造函数和析构函数(3)
- 第4周课后实践·阅读程序-构造函数和析构函数(4)
- C++:派生类的默认构造函数和拷贝构造函数调用基类构造函数的机制(含程序验证)
- C++学习笔记(6)----基类和派生类的构造函数和析构函数的执行顺序
- 关于基类和派生类的构造函数和析构函数的执行顺序问题
- 第十二周程序阅读5:基类和派生类的转换
- 第六周阅读程序1:构造函数与析构函数
- 第四周 程序阅读——构造函数和析构函数(一)
- 第四周项目零:程序阅读——构造函数和析构函数(1)
- 第四周 阅读程序(构造函数和析构函数)
- 第4周项目--构造函数、析构函数程序阅读1
- 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)
- 关于基类和派生类的构造函数和析构函数的执行顺序问题
- C++中基类,派生类 类成员对象的构造函数,析构函数的顺序