use*_*106 10 c++ reference class linked-list operators
我一直在阅读使用类的List(及其节点)的实现,我发现了一些我不太了解的事情.这是我不理解的Node类中的代码:
class Node {
private:
Data data;
Node* next;
public:
Node*& getNext();
};
Node*& Node::getNext()
{
return this->next;
}
Run Code Online (Sandbox Code Playgroud)
什么是*&确切?我不知道该方法返回什么样的变量.
我想我现在得到它,后来我有这些行(在类List中):
Node** node = &first;
node = &(*node)->getNext();
Run Code Online (Sandbox Code Playgroud)
这是否意味着我在节点*中存储下一个地址?
注:评论中回答了第二个问题.谢谢你的回复.
这是对指针的引用.这意味着Node*
函数返回的是别名Node::next
.
例如,假设你有:
Node n;
n.getNext() = NULL;
Run Code Online (Sandbox Code Playgroud)
这设置n.next
为NULL
.
如果该方法没有通过引用返回
Node* Node::getNext() //no reference
{
return this->next;
}
Run Code Online (Sandbox Code Playgroud)
相同的代码
Node n;
n.getNext() = NULL;
Run Code Online (Sandbox Code Playgroud)
不会 修改编译,因为n.next
- 在这种情况下,它将保持未初始化状态getNext
在rvalue
这里返回.
或者,通过引用返回:
Node*& x = n.getNext();
x = new Node;
Run Code Online (Sandbox Code Playgroud)
将修改n.next
,作为x
参考n.next
.