类中含有类本身的指针,构造函数和析构函数如何写
类中含有类本身的指针,构造函数和析构函数怎么写?今天看到一个找错题如下#include iostreamusing namesp
类中含有类本身的指针,构造函数和析构函数怎么写?
今天看到一个找错题如下
#include <iostream>
using namespace std;
class A
{
public:
A()
{
p = this;
}
~A()
{
if (p!=NULL)
{
delete p;
p = NULL;
}
}
private:
A *p;
};
int main()
{
A a;
return 0;
}
我当时回答了没有给p分配内存,后来运行程序觉得应该是析构函数陷入了死循环。
另外就是如果真要给p分配内存应该怎么分配? 面试题,指针
[解决办法]delete ->相对于new来说的,你这样容易造成未定义的结果
[解决办法]”p分配内存“你的意思是在调用构造函数的时候对象还没有分配空间吗,事实上在调用构造函数的时候,对象的空间已经分配,构造函数的调用只是为了初始化对象的成员(当然还有在编译器层面上对构造函数函数的扩充)
[解决办法]楼主可加在析构函数加
cout<<this<<endl;看看
确实是死循环
[解决办法]的确会死循环。。