gpt4 book ai didi

c++ - 我应该在赋值运算符中检查 NULL 吗?

转载 作者:行者123 更新时间:2023-11-30 04:32:24 25 4
gpt4 key购买 nike

我有课

class Node {

public:
int value;
Node * next;

Node();
Node(const Node& other);
Node& operator= (const Node& other);
};

它不是很有用,但它有一个重写的赋值运算符。那里的一切都是公开的,因为我是一个开放和合作的人。

现在在别处我有这些节点的数组:

Node * nodes = new Node[15];

当我尝试将一个节点分配给我的节点数组时:

nodes[0] = Node();

我遇到了一个巨大的丑陋的崩溃。

我的赋值运算符是这样的:

Node& Node::operator= (const Node& other) {

// watch out for self assignment
if (this == &other) return *this;

delete this->next;
this->next = new Node(*(other.next)); // call the copy constructor
this->value = other.value;

return *this;
}

我觉得在尝试取消引用其成员之前,我应该检查 this 是否为 NULL。有什么想法可能是错误的吗?

最佳答案

你不应该检查this是否为NULL;在有效对象之外调用非静态成员函数是非法的。

您可能必须确保赋值中源对象和目标对象的next 指针成员变量为空或指向有效对象。如果没有看到真正的代码,就不可能说您目前拥有的构造函数是否正确执行此操作。

关于c++ - 我应该在赋值运算符中检查 NULL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693716/

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