[问题] class的内存宣告问题

楼主: kdok123 (小天)   2014-09-21 19:22:32
不好意思我是C++新手...
有个class长这样
class test{
public:
test();
~test();
private:
test *node;
};
test::test()
{
node = new test;
}
test::~test()
{
free(node);
}
int main()
{
test *head = new test;//这个地方就爆掉了
return 0;
}
大概跑了一次知道是constructor里不能再new了,不过为什么呢?
我只是想要把物件指标head里的node给定一个new的空间而已呀?
大概有想过应该是我外面new了一个test的容量
可是里面又要new一个test,这样双倍的test他会吃不消
所以我又试了
test *head = new test[2];
但还是不行
最后是把constructor拿掉,把test *node宣告成public
从main里用物件去申请node的空间才行
想请问这中间的空间分配问题出在哪里了??
作者: bibo9901 (function(){})()   2014-09-21 19:39:00
这是一个递回的概念...
作者: LPH66 (-6.2598534e+18f)   2014-09-21 19:42:00
new test; 这句话除了要空间之外还会呼叫 constructor看起来你是不是在写类似 linklist 的东西?
作者: kwpn (ITSST)   2014-09-21 20:04:00
new不是配free
作者: tomnelson   2014-09-21 20:15:00
看来很多基本观念还没有建立,加油啦~
楼主: kdok123 (小天)   2014-09-21 21:55:00
嗯! 我知道是递回了XD 感谢大家!
作者: Killercat (杀人猫™)   2014-09-21 22:51:00
老实讲这个叫做bug 不叫做递回 XD另外如果这是linked list的话 是别人new好了attach进来才是正确概念 不是你去把node new出来

Links booklink

Contact Us: admin [ a t ] ucptt.com