结点类中成员函数指针为什么有两个node?

//类模板的定义
template <class T>
class Node {
  private:
      Node<T> *next; //指向后继结点的指针
  public:
    T data; //数据域
    Node (const T &data, Node<T> *next = 0); //构造函数
    void insertAfter(Node<T> *p); //在本结点之后插入一个同类结点p
    Node<T> *deleteAfter(); //删除本结点的后继结点,并返回其地址
    Node<T> *nextNode(); //获取后继结点的地址
    const Node<T> *nextNode() const; //获取后继结点的地址
};

//类的实现部分
//构造函数,初始化数据和指针成员
template <class T>
Node<T>::Node(const T& data, Node<T> *next ) : data(data), next(next) { }
//返回后继结点的指针
template <class T>
Node<T> *Node<T>::nextNode() {
    return next;
}
//返回后继结点的指针
template <class T>
const Node<T> *Node<T>::nextNode() const {       //为什么有两个Node<T>
    return next;
}

const Node<T> *Node<T>::nextNode() const {为什么会有两个Node<T>?

阅读 967
1 个回答
class N {
public:
  const N *getPtr();
}

const N *N::getPtr(){ // 你看非模板类也是有两个 N 的
  return this;
}

这两个前一个时返回类型,后一个用来说明这个函数是 Node<T> 的成员。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题