C++类的继承中构造函数和析构函数调用顺序例子详解编程语言
/*当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的
构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。
简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是
要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时,
如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。
下面的这个程序说明这个问题*/
// -
#include iostream
using namespace std;
class Shape
{
public:
void Draw() {cout Base::Draw() endl;}
void Erase() {cout Base::Erase() endl;}
Shape() {Draw();} //基类构造函数,调用上面的Draw函数体
virtual ~Shape() {Erase();}//基类析构函数,调用上面的Erase函数体
};
// -
class Polygon:public Shape
{
public:
Polygon() {Draw();}
void Draw() {cout Polygon::Draw() endl;}
void Erase() {cout Polygon Erase() endl;}
~Polygon() {Erase();}
};
//
class Rectangle:public Polygon
{
public:
Rectangle() {Draw();}
void Draw() {cout Rectangle::Draw() endl;}
void Erase() {cout Rectangle Erase() endl;}
~Rectangle() {Erase();}
};
//
class Square:public Rectangle
{
public:
Square() {Draw();}
void Draw() {cout Square::Draw() endl;}
void Erase() {cout Square Erase() endl;}
~Square() {Erase();}
};
//
int main()
{
Polygon c;
Rectangle s;
Square t;
cout endl;
return 0;
}
//
运行结果:
Base::Draw()
Polygon::Draw()
Base::dRAW()
Polygon::Draw()
Rectangle::Draw()
Base::dRAW()
Polygon::Draw()
Rectangle::Draw()
Square::Draw()
Square Erase()
Rectangle Erase()
Polygon Erase()
Base::Erase()
Rectangle Erase()
Polygon Erase()
Base::Erase()
Polygon Erase()
Base::Erase()
Press any key to continue
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18505.html
cgo相关文章
- C++ 输入的是1.3变1.29999995问题
- EasyC++74,继承(一)
- EasyC++75,继承(二)
- EasyC++86,多继承(一)
- leetcode:92. 反转链表 II(C++)
- c++ auto类型_auto C++
- 菱形继承问题及解决方法—虚继承与虚基类(C++)
- C++回炉之_C++PrimerPlus_第十三章 类继承
- C++stl库_c++库
- C++写一个CSGO开箱模拟器「建议收藏」
- C/C++ Qt 编译打包项目
- C++ 构造函数的运用,继承、派生时的重载方式
- 【C++】STL 模拟实现之 list
- C++三大特性之继承详解编程语言
- C++中的类继承之单继承&多继承&菱形继承详解编程语言
- c++ 类模板函数模板的问题,模板函数不能是虚函数,虚函数不能是内联详解编程语言
- C++三种继承方式详解编程语言
- C++继承和派生是什么意思(通俗易懂)
- C++ piecewise_constant_distribution分段常数分布随机数用法详解
- C如何连接Oracle数据库(c++怎样连oracle)
- 使用C++实现全排列算法的方法详解
- C++中virtual继承的深入理解
- C++中继承与组合的区别详细解析
- c++基础语法:虚继承
- C++vector删除符合条件的元素示例分享
- VC++中HTControl的CHTButton按钮控件类用法实例解析