继承中的构造和析构 继承和组合混搭情况下,构造函数、析构函数调用顺序研究
来源:互联网 发布:垃圾食品税收 知乎 编辑:程序博客网 时间:2024/06/01 10:46
//继承中的构造和析构 //继承和组合混搭情况下,构造函数、析构函数调用顺序研究#include <iostream>using namespace std;class Object //爷爷{public:Object(const char* s)//爷爷的构造函数{cout << "Object()" << " " << s << endl;}~Object()//爷爷的析构函数{cout << "~Object()" << endl;}};class Parent : public Object //父亲{public:Parent(const char* s) : Object(s)//继承爷爷,在调用父亲构造函数时,应该先调用{cout << "Parent()" << " " << s << endl;}~Parent(){cout << "~Parent()" << endl;}};class Child : public Parent//儿子{protected:Object o1;Object o2;public:Child() : o2("o2"), o1("o1"), Parent("Parameter from Child!"){cout << "Child()" << endl;}~Child(){cout << "~Child()" << endl;}};void run05(){Child child;}int main(int argc, char *argv[]){cout << "demo05_extend_construct_destory.cpp" << endl;run05();system("pause");return 0;}接下来我来分析此代码
开始child对象创建将调用child构造函数,因为child继承了parent,所以在调用child之前先调用parent构造函数,又因为parent继承Object,所以在调用Parentt函数之前先调Object构造函数,调用完object函数,然后调用Parent函数,调用了Parent函数,好,这里因为在child类中的成员是两个object对象,因此调用完Parent类后,然后应该调用2个object对象的构造函数(注意这个和第一次调用不一样),最后再调用child构造函数
析构的顺序与构造顺序相反
先child析构,然后child中的成员析构,再parent析构最后Object(爷爷析构)
综合演练2
//继承中的构造和析构 //继承和组合混搭情况下,构造函数、析构函数调用顺序研究#include <iostream>using namespace std;class Object{public:Object(const char* s)//爷爷{cout << "Object()" << " " << s << endl;}~Object(){cout << "~Object()" << endl;}};class Parent : public Object{public:Parent(const char* s) : Object(s) //爸爸{cout << "Parent()" << " " << s << endl;}~Parent(){cout << "~Parent()" << endl;}};class Child : public Parent//儿子{protected:Object o1;Object o2;public:Child() : o2("o2"), o1("o1"), Parent("Parameter from Child!"){cout << "Child()" << endl;}~Child(){cout << "~Child()" << endl;}};void run05(){Child child;}int main(int argc, char *argv[]){cout << "demo05_extend_construct_destory.cpp" << endl;run05();system("pause");return 0;}
//此例子与上面例子一样,自己可以试着分析
通过这2个例子的讲解,大家应该对继承中析构与构造混搭有了一个了解了吧
0 0
- 继承中的构造和析构 继承和组合混搭情况下,构造函数、析构函数调用顺序研究
- C++学习笔记:3.3.4 继承和组合混搭情况下,构造和析构调用顺序
- 继承和构造函数析构函数调用顺序
- 继承与组合混搭情况下,构造和析构调用原则
- 【c++继承】继承关系中派生类对象构造函数和析构函数调用顺序
- 继承中的构造和析构函数
- 继承和组合混搭情况下的构造和析构.cpp
- C++构造函数的执行顺序及析构函数的执行顺序-多种情况:普通继承、虚拟继承、类构造函数调用其它类的构造函数
- 继承时构造函数、析构函数的顺序研究
- 继承中构造函数和析构函数地调用顺序
- 继承中构造函数和析构函数地调用顺序
- 继承中构造函数和析构函数地调用顺序
- C++继承中构造函数和析构函数的调用顺序
- c++类继承,构造函数和析构函数调用顺序
- C++类的继承中构造函数和析构函数调用顺序例子
- 继承中构造函数和析构函数的调用顺序
- C++的继承中构造和析构函数的调用顺序
- 继承中的构造和析构、继承与组合混搭下的构造和析构
- 自家学校NIT。被遗忘的数。
- 地大校赛2014 题解
- 算法学习 - STL的排序函数(sort)使用
- 天龙八部之那些年,我们共同打过的木桶伯
- 【笔记】查找
- 继承中的构造和析构 继承和组合混搭情况下,构造函数、析构函数调用顺序研究
- 【年度总结】2014学习之路
- libevent evsignal_new() 信号事件回调函数未被触发。
- python 编码unicode 和 str
- jquery ajax后台向前台传list 前台用jquery $.each遍历list
- Android自动化基础—简单例子(启动相机拍照-重复执行1000次)
- 多态问题抛出(赋值兼容性原则遇上父类与子类同名函数的时候)
- HDU 1286 欧拉函数。
- 【笔记】查找