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
相同。根据我的理解,后者就是所谓的深度复制?