基础备忘:多重继承的构造函数和析构函数
来源:互联网 发布:古墓丽影崛起帧数优化 编辑:程序博客网 时间:2024/05/17 12:19
多继承构造函数和析构函数的执行顺序与单继承相同,但应强调的是,基类之间的执行顺序是严格按照声明时从左到右的顺序来执行的,与他们在定义派生类构造函数中的次序无关。例如:
#include<iostream>using namespace std;class Base1{ int x1; public: Base1(int y1) { x1=y1; cout<<"Constructing Base1, x1= "<<x1<<endl; } ~Base1() { cout<<"Destructing Base1"<<endl; } };class Base2{ int x2; public: Base2(int y2) { x2=y2; cout<<"Constructing Base2, x2= "<<x2<<endl; } ~Base2() { cout<<"Destructing Base2"<<endl; } };class Base3{ public: Base3() { cout<<"Constructing Base3"<<endl; } ~Base3() { cout<<"Destructing Base3"<<endl; } };class Derived: public Base2,public Base1,public Base3//基类之间的执行顺序是严格按照声明时从左到右的顺序来执行的,与他们在定义派生类构造函数中的次序无关。 { private: Base1 ob1; Base2 ob2; Base3 ob3; public: Derived(int x,int y,int z,int v):Base1(x),Base2(y),ob1(z),ob2(v)//对于使用默认构造函数的基类或对象成员(Base3,ob3),可以不写在参数表达式表里 { cout<<"Constructing Derived"<<endl; } }; int main(){ Derived ob(1,2,3,4);//Derived(1,2,3,4); system("pause"); }
上例中,创建派生类的对象ob时,依次调用基类Base2,Base1,Base3,最后调用派生类Derived的构造函数。有释放对象调用析构函数时,其顺序正好与构造函数的顺序相反。
- 基础备忘:多重继承的构造函数和析构函数
- 多重继承的构造函数和析构函数的执行顺序(包含虚基类)
- 多重继承中派生类的构造函数和析构函数
- 基础备忘:派生类的构造函数和析构函数
- 多重继承-构造函数与析构函数执行顺序
- 虚基类和多重继承下构造函数的顺序
- 派生类构造函数和多重继承的二义性问题
- 多重继承派生类的构造函数
- 多重继承 - 构造函数的规则
- 多重继承类构造函数的声明
- 多重继承派生类的构造函数
- 多重继承派生类的构造函数
- 基础备忘:虚基类的构造函数和初始化
- C++ 构造函数和析构函数的继承
- C++在继承的构造函数和析构函数
- C++在继承的构造函数和析构函数
- c++继承里面的构造函数和析构函数
- 浅议C++对象模型:多重继承下析构函数和构造函数的调用顺序解析
- 高效率3D图形程序中的骨骼
- Unix传奇
- Hdu3879 Base Station 最大权闭合子图 最大获利
- 如何避免网站出现优化过度
- 黑马程序员_JavaSE基础04 之 循环嵌套 函数重载 数组 内存空间划分
- 基础备忘:多重继承的构造函数和析构函数
- 从100个数中随机选出10个
- 二叉树遍历算法集合(前中后序遍历的递归和非递归算法,层序遍历算法)
- 科技论文格式和写作技巧
- Ogre -- 3DMax导出插件oFusion
- 数学建模的准备
- 第九章 Java多线程机制 03_Join_Yield_Priority
- 科学论文的格式
- 浅谈Java中的几种随机数