【问题标题】:C++ class pointer I.e node*C++ 类指针即节点*
【发布时间】:2021-05-24 19:48:33
【问题描述】:

在 c++ like list 中为什么我们必须写 node* 之类的节点指针而不指定 int、double 等,我们也可以在 main 中声明新的节点指针而不使用任何节点类声明。

   class Node { 
public: 
    int data; 
    Node* next; 
}; 

如果它有任何不同类型的指针,那么它叫什么?

【问题讨论】:

  • 我怀疑你没有一本好书。在 C++ 中, 链表是一个名为 std::list< > 的模板,您无需为节点操心。
  • 注意:node*Node* 不是一回事。问题是“为什么Node 被视为一种类型”?无论如何,如果不将Node 包含在任何其他使用它的地方,您就不能使用它。

标签: c++ class oop pointers linked-list


【解决方案1】:

在你的代码中

class Node { 
public: 
    int data; 
    Node* next; 
}; 

只有一种节点,它有一个int 用于数据。这就是为什么你不需要写Node<int>Node<double>。但是你可以改变你的代码

template <typename T>
class Node { 
public: 
    T data; 
    Node<T>* next; 
}; 

这称为模板,而不是只有int 用于数据,您可以使用任何类型。但是现在您必须在声明变量时说出该类型是什么。例如

Node<double>* ptr = new Node<double>();

【讨论】:

  • 旁白:Node* next在模板情况下也是可以的
猜你喜欢
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多