我有两个虚拟的问题使我困惑了一段时间。我确实做了一些在线搜索,并通读了很多c ++教程,但是找不到具体答案。
假设我们有一个名为Node的类,它是单链表的组成部分。
class Node
{
int data;
Node* next;
}
事实1:局部变量(非静态)将在相应功能退出时销毁。
Question1:情况如何?
Node* func()
{
Node n;
Node* ptr=&n;
return n;
}
节点n是否会被销毁?或者,我们必须使用new运算符创建节点并返回指向堆内存的指针。如果两种方法都可行,哪种方法更好?
Question2:如何为节点类编写析构函数? (我在stackOverflow上找到了一些类似的问题,但这些答案集中在链接列表的析构函数上。我已经掌握了这一部分。我想要的正是Node类的析构函数。)>
--------------------------------------- EDIT -------- ----------------------------
感谢所有给我建议或指出我的错误的人。我想我得到了答案。以下是我从您的回答中记下的便条,这确实消除了我的困惑。
我有两个虚拟的问题使我困惑了一段时间。我确实做了一些在线搜索,并通读了许多c ++教程,但是找不到具体答案。假设我们有一个名为...
问题1
您可以返回指向本地对象的指针,但是它将指向堆栈内存,因此结果可能令人惊讶。看下面的代码:
您可能的意思是:
否,您不必使用new
从函数返回对象。您可以返回本地对象的副本。