C++ 返回指向指针变量的指针的函数?

C++ 返回指向指针变量的指针的函数?,c++,pointers,C++,Pointers,假设我有一个链表节点类 class node { private: node *next_node; public: node *next() const; }; node *node::next() const { return next_node; } next()是否返回节点**下一个节点或节点*下一个节点。另外,在实现列表类函数(即插入、删除、查找)时,两者的意义是什么 我认为它返回**next_节点的原因是,next_节点已

假设我有一个链表节点类

class node {
    private: 
        node *next_node;
    public:
        node *next() const;
};

node *node::next() const {
    return next_node;
}
next()是否返回节点**下一个节点或节点*下一个节点。另外,在实现列表类函数(即插入、删除、查找)时,两者的意义是什么

我认为它返回**next_节点的原因是,next_节点已经是指针,在函数中作为指针返回它将使其成为指向指针的指针。我读到了其他问题,例如:双指针在列表操作中也起作用,所以我有点困惑。

实现的
node::next()
函数正在返回
next\u node
成员变量的副本。
next_节点
和此副本都指向相同的
节点
实例,但它们在其他方面相互独立

这里有一些相当糟糕的ASCII艺术,试图展示他们的关系

next_node ----> [node instance] ^ the copy ------/ 下一个\u节点-->[节点实例] ^ 副本------/
正如声明所说,它返回一个指向下一个节点的指针,类型为
node*

它用于在列表中前进;例如:

for (node * n = list.head(); n; n = n->next()) {
    // Process node n
}

我建议你自己做作业,你能用自己的话解释一下,为什么你认为这可能会返回一个
节点**
?对不起,我已经几个月没上学了。我想温习一下编程技巧,指针是我的弱点之一。我理解这个问题是否可以作为一个家庭作业问题来解决。如果函数被实现为node node::next()const{return next_node;}会有什么区别?这只是简单地按值返回next_node,并且与:node*node::next()const{return&next_node;}相同吗@实际上不会编译的rcell。您需要编写
node node::next()const{return*next_node;}
。这将返回
next\u节点
值的浅拷贝将与
*node::next
相同。根据我的理解,后者就是所谓的深度复制?