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

2025-05-01 08:46:53
推荐回答(2个)
回答1:

运行结果如下:
构造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对象没有释放,实际上叫做内存泄漏

回答2:

obj对象创建的时候会先创建父类,所以先调用A的构造函数,再调用B的构造函数
p对象直接调用A的构造函数
返回的时候
obj对象被销毁,先销毁自己,所以先调用B的析构函数,然后调用A的析构函数
至于p对象,使用new来生成的,是不会自动销毁的,不过这里return之后程序已经结束,系统会自动销毁p对象