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

时间:2012-04-13 16:12:48

标签: c++ pointers

假设我有一个链表节点类

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

node *node::next() const {
    return next_node;
}

next()是否返回节点** next_node或node * next_node。另外,在实现列表类函数(即插入,删除,查找)中有什么意义?

我认为它返回** next_node的原因是因为next_node已经是一个指针并且在函数中返回它作为指针会使它成为指向指针的指针。我读过其他问题,例如:Linked list head double pointer passing双指针也适用于列表操作,所以我有点困惑。

2 个答案:

答案 0 :(得分:0)

实现的node::next()函数返回next_node成员变量的副本。 next_node和此副本都指向同一个node实例,但它们彼此独立。

这是一些非常糟糕的ASCII艺术,试图展示他们的关系

next_node ----> [node instance]
                ^
the copy ------/

答案 1 :(得分:0)

如声明所述,它返回指向node*类型的下一个节点的指针。

它用于推进列表;例如:

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