C++类多重继承与构造函数使用
来源:互联网 发布:德国代购淘宝店铺推荐 编辑:程序博客网 时间:2024/05/26 22:57
/*当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的
构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。
简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是
要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时,
如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。
下面的这个程序说明这个问题*/
//-------------------------------------------------
#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
- C++类多重继承与构造函数使用
- 二十七、继承(四) 多重继承、虚继承与虚基类、虚基类及其派生类构造函数
- 多重继承派生类的构造函数
- 多重继承类构造函数的声明
- 多重继承派生类的构造函数
- 多重继承派生类的构造函数
- 多重继承-构造函数与析构函数执行顺序
- 7.27多重继承派生类的构造函数
- 多重继承中派生类的构造函数
- 派生类构造函数和多重继承的二义性问题
- 多重继承构造函数执行顺序
- 多重继承构造函数执行顺序
- 多重继承 - 构造函数的规则
- 多重继承构造函数执行顺序
- 多重继承与虚函数
- C++之构造函数(三) 多重继承构造函数初始化
- 继承与构造函数
- 继承与构造函数
- Android 用纯代码实现复杂界面
- [堆][贪心]cf228cFox and Box Accumulation
- VisualNet地税管道综合资源管理系统
- C#将格式为yyyyMMdd的时间转化为yyyy-MM-dd类型
- ios 蓝牙
- C++类多重继承与构造函数使用
- ios 6中设备旋转问题
- Jenkins 新建maven项目svn报诡异异常
- www.jhost.cn;java免费空间服务器
- 【Web】Asp开发基本分析及Web服务器机制分析
- 判断整数序列是不是二元查找树的后序遍历结果 C++实现
- Hibernate -- 映射多对多双向关联关系
- Apache Ant
- Navicat连接oracle常见问题详解