为什么我们不能在不使用指针的情况下初始化节点



我最近开始学习数据结构,作为一个初学者,我在实现链表节点时遇到了一个查询,为什么我们必须只使用指针初始化节点?

class node{
public:
int data;
node* next;
node(int val){
data = val;
next = NULL;
}
};
int main(){
node* head = NULL;
node head = NULL; // this throws an error which i cannot understand
}

实际上,您可以通过值初始化节点。如果你想用值初始化一个节点,根据你的构造函数node(int val),你必须像下面这样编码:

class node{
public:
int data;
node* next;
explicit node(int val){
data = val;
next = NULL;
}
};
int main(){
int value = 777;
//node* head = NULL; // Initialize head pointers to null
node head(value);   // By your constructor definition
}

编辑:顺便说一句,正如Duthomhas所评论的,将构造函数标记为显式是一个非常好的习惯,因为它可以防止意外的转换。

相关内容

最新更新