gpt4 book ai didi

c++ - 为什么实际节点必须是指针?

转载 作者:行者123 更新时间:2023-12-02 09:54:49 25 4
gpt4 key购买 nike

因此,当我们实际创建节点对象时,为什么它必须是指针。为什么不能仅仅使它成为常规的Node对象呢?数据,然后将箭头运算符用于下一个节点。

class Node {
int data;
Node * next;
};

int main() {
Node * node1, node2; // why make it a pointer
Node node3, node4; // Why dont people leave it has non pointer,
because you already have Node* next in the class.
}

最佳答案

指针在动态分配中发挥出色。您可以继续通过指针使用对象,直到有目的地释放它。另一方面,自动对象在作用域的末尾被破坏,所有指向它们的指针(和引用!1)悬而未决。

如果您知道不会在包含对象本身的作用域之外使用任何指针(对于main()中的示例来说可能是正确的),那么请继续使用自动对象。

但是最后一个复杂的问题是,如果指针之一是“智能”指针,它知道如何释放其指向的对象,则必须使用匹配的分配函数来创建附加的对象。尝试释放自动(作用域)2对象只会导致痛苦。

1经常重复执行的语句,例如“引用等同于对象本身”和“定义良好的程序无法创建无效的引用”,这是完全错误的,但这是一个冗长的讨论。

2苦难还伴随着尝试释放一个静态对象或成员子对象,或者使用其他分配器动态分配的对象。

关于c++ - 为什么实际节点必须是指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61127642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com