读书人

类中含有类本身的指针构造函数和析构

发布时间: 2013-09-06 10:17:17 作者: rapoo

类中含有类本身的指针,构造函数和析构函数怎么写?
今天看到一个找错题如下


#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;看看
确实是死循环
[解决办法]
的确会死循环。。

读书人网 >C++

热点推荐