c++中构造函数析构函数是怎么运行的,这个程序怎么运行,麻烦说一下运行的步骤结果

#include<iostream>//预处理命令usingnamespacestd;//使用标准命名空间stdclassA{public:A(){cout<<"构造A"... #include <iostream> // 预处理命令
using namespace std; // 使用标准命名空间std

class A
{
public:
A(){ cout << "构造A" << endl; } // 构造函数
~A(){ cout << "析构A" << endl; } // 析构函数
};

class B: public A
{
public:
B(){ cout << "构造B" << endl; } // 构造函数
~B(){ cout << "析构B" << endl; } // 析构函数
};

int main(void)
{
B obj;
A *p = new A;

return 0; // 返回值0, 返回操作系统
}
展开
 我来答
chiconysun
2017-01-07 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2484万
展开全部
运行结果如下:
构造A
构造B
构造A
析构B
析构A
解释:
1、构造A
2、构造B
3、构造A
4、析构B
5、析构A
1、构造派生类对象B中内嵌的继承来的对象A(派生类先构造基类再构造自己成员)

2、构造派生类对象B中自己的成员
这两步是B obj;的结果

3、构造A ,这是A *p = new A;的结果

4、析构B
5、析构A
这2步是析构obj对象退出main函数时的析构结果,先析构自己,再析构内嵌的A
那个p指向的A对象没有释放,实际上叫做内存泄漏
璐人钇
2017-01-07 · TA获得超过1552个赞
知道小有建树答主
回答量:1365
采纳率:69%
帮助的人:651万
展开全部
obj对象创建的时候会先创建父类,所以先调用A的构造函数,再调用B的构造函数
p对象直接调用A的构造函数
返回的时候
obj对象被销毁,先销毁自己,所以先调用B的析构函数,然后调用A的析构函数
至于p对象,使用new来生成的,是不会自动销毁的,不过这里return之后程序已经结束,系统会自动销毁p对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式