c++ - C++ 中的指针作用域

标签 c++ scope

虽然这是一个非常笼统的问题,但这是我的具体示例,因此您可以理解我的问题。

我有一个四叉树类的复制构造函数。因此,我编写了一个递归辅助方法,称为 copy,这样我就可以在我的复制构造函数中调用它。助手采用一个参数,一个节点。从构造函数调用时,根节点作为第一个参数给出。

所以现在在我的辅助方法中,我创建了一个新节点,将其命名为 newNode,每个节点都有成员变量 neChild、nwChild、seChild、swChild----sw 表示西南 nw、ne、 se 都是基本方向,我将每个新 child 设置为等于 source.child 的 child 。然后我在每个 source.child(其中 4 个)上再次递归调用辅助方法。这样一来,1 个节点变成 4 个,然后有 16 个子节点,依此类推。然后我返回我创建的第一个 newNode

问题:

新返回的节点是否会附加所有其他节点?它会是树结构吗(虽然不是正式的树)?或者那些附加到返回指针的指针会超出范围吗?

最佳答案

你最终会得到一个新的根节点,它链接到与原始树相同的子节点。因此,对任何 child 所做的任何更改都会影响两棵树,您以后可能会遇到双重释放问题。

这是因为,尽管您正在递归调用 copy,但您正在丢弃返回值。

此外,您说这个copy 函数是从您的复制构造函数调用的?你正处在一个痛苦的世界中,因为 copy 调用复制构造函数(在 return 语句中,因为你按值返回)。这是堆栈溢出的秘诀。我猜你来对地方了 ;)

关于c++ - C++ 中的指针作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5321133/

相关文章:

c++ - C++中使用for循环时的同名变量

c++ - C++ 中的多维数组值到字符串

c++ - OpenCV:Mat::reshape() 什么都不做

C++ 错误 "not declared in scope"编程第二周,

javascript - 是否可以在 JavaScript 函数内从调用者的作用域访问变量?

Python:无法从 init 文件导入在 setUp 方法中初始化的全局变量

c++ - 处理破坏堆的对象

c++ - [expr.ref]/1 中提到的脚注到底是什么意思?

javascript - 仍然对 JavaScript 中的 "this"关键字感到困惑

javascript - Angular promise 返回 "undefined"值 .NET MVC