关于C++中类的构造函数和作用域的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 00:50:18
C++中,比如建一个链表类,私有成员只有头指针,构造函数是不断地为指针接新结点。但是新建的结点都是在构造函数中建立的,当构造函数结束后,那些新建的结点还存在,为什么?

你说的构造函数是这样的么?
template <class T>
list<T>::list()
{
head=new node<T>;
head->next=NULL;
}
或者类似这样的,里面是用new操作符创建的节点,new操作符创建的变量是在程序的堆中声明的,如果你不手动用delete释放,理论上他会在一直保持着占用空间的,我这里说得比较粗略,楼主可以去看看各种变量的作用域和所处的位置(全局变量,静态变量,自动变量,用malloc创建或者new操作符创建的堆变量)

当然存在。举个简单例子
String a = new String("1");//这个构造函数结束了,而a的值就是1。只要没有使用析构函数,这个节点就一直保存在a里,直到程序全部执行完毕。

应该是存在的。楼主蛮认真的,我还真是没有细想过这个问题。
但是如果不存在,当我们存放数据后,在free前,不就没法读取了吗?
另外,正如二楼所说,这种数据是存放在堆中的,现在我的习惯是,没有free就一直存在。具体原因,楼主看明白了的话,发出来,我也想看看,学习一下。