gpt4 book ai didi

c++ - 组合 & 和 * 运算符

转载 作者:可可西里 更新时间:2023-11-01 15:39:39 25 4
gpt4 key购买 nike

我一直在通读一个使用类的列表(及其节点)的实现,我发现了一些我不太明白的地方。这是我不理解的 Node 类中的代码:

    class Node {
private:
Data data;
Node* next;
public:
Node*& getNext();
};

Node*& Node::getNext()
{
return this->next;
}

*& 到底是什么?我不知道该方法返回哪种变量。

我想我现在明白了,稍后我有这些行(在类列表中):

Node** node = &first;
node = &(*node)->getNext();

这是否意味着我将 next 的地址存储在节点 * 中?

注意:第二个问题在评论中得到了回答。感谢您的回复。

最佳答案

这是对指针的引用。这意味着函数返回的 Node*Node::next 的别名。

例如,假设您有:

Node n;
n.getNext() = NULL;

这会将 n.next 设置为 NULL

如果方法没有通过引用返回

Node* Node::getNext()  //no reference
{
return this->next;
}

相同的代码

Node n;
n.getNext() = NULL;

不会修改n.next - 而且,在这种情况下,它将保持未初始化编译状态,因为getNext 返回一个rvalue 这里。

或者,通过引用返回:

Node*& x = n.getNext();
x = new Node;

将修改 n.next,因为 x 是对 n.next 的引用。

关于c++ - 组合 & 和 * 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13036239/

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