问题及代码:
#include <iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"A";
}
~A()
{
cout<<"~A";
}
};
class B
{
A *p;
public:
B()
{
cout<<"B";
p=new A();
}
~B()
{
cout<<"~B";
delete p;
}
};
int main()
{
B obj;
return 0;
}
运行结果:
知识点总结:
动态指针新建对象时,构造函数与析构函数执行的机制
学习心得:
//建立一个对象B,先执行B的构造函数 输出 B;
//在B的构造函数里,new一个对象A,所以执行A的构造函数,输出 A;
//return 0;整个测试函数结束,执行一个B的析构函数,输出 ~B;
//B的析构函数中,delete p;此处p指的 new A();所以执行A的析构函数,输出 ~A;
//所以最后输出的结果是 BA~B~A