加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C++学习之继承类对象的构造与析构顺序

发布时间:2020-12-15 04:53:25 所属栏目:百科 来源:网络整理
导读:建立一个类的继承类,然后实例化之后来观察该对象的构造和析构函数的调用顺序。 首先我们建造一个People.h头文件: #ifndef INHERIT_PEOPLE_H #define INHERIT_PEOPLE_H #include using namespace std; class People{ public: int m_iAge; string m_strName;

建立一个类的继承类,然后实例化之后来观察该对象的构造和析构函数的调用顺序。

首先我们建造一个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读