C++学习之继承类对象的构造与析构顺序
建立一个类的继承类,然后实例化之后来观察该对象的构造和析构函数的调用顺序。 首先我们建造一个People.h头文件: #ifndef INHERIT_PEOPLE_H #define INHERIT_PEOPLE_H #include using namespace std; class People{ public: int m_iAge; string m_strName; void eat(); People(); ~People(); }; #endif //INHERIT_PEOPLE_H 然后是其对应的实现,People.cpp文件: 每个函数的具体实现都很简单,只是输出函数名称,体现出我们调用了该函数。 #include "People.h" #include using namespace std; People::People() { cout<<"People()"< } People::~People() { cout<<"~People()"< } void People::eat() { cout<<"eat()"< } 公有继承类Worker,其Worker.h头文件如图所示: #ifndef INHERIT_WORKER_H #define INHERIT_WORKER_H #include "People.h" class Worker:public People{ public: Worker(); ~Worker(); void work(); int m_iSalary; }; #endif //INHERIT_WORKER_H 实现为Worker.cpp,每个函数的具体实现都很简单,只是输出函数名称,体现出我们调用了该函数。 #include "Worker.h" #include using namespace std; Worker::Worker() { cout<<"Worker()"< } Worker::~Worker() { cout<<"~Worker()"< } void Worker::work() { cout<<"work()"< } 执行main.cpp, #include #include "People.h" #include "Worker.h" using namespace std; int main() { Worker a; a.eat(); a.work(); return 0; } 执行结果为: 由结果可以看出,当我们实例化一个继承类对象时,先调用基类的构造函数,然后再调用继承类的构造函数。 析构时,则相反,先析构继承类,然后在调用基类析构函数。 People() Worker() eat() work() ~Worker() ~People() 进程已结束,退出代码 0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |