定义新节点出现错误
1 /*
2 // Definition for a Node. 3 class Node { 4 public: 5 int val; 6 Node* next; 7 Node* random; 8
9 Node(int _val) { 10 val = _val; 11 next = NULL; 12 random = NULL; 13 } 14 }; 15 */
为什么按照如下的方式定义节点会出现错误?
Node* new_node; new_node = new Node;
报错:no matching constructor for initialization(没有用于初始化的匹配构造函数)
正确的定义如下:
Node* new_node; new_node = new Node(head_temp -> val);
解释:
在类中,有一种函数称为构造函数,这种函数没有函数类型,在定义一个对象时,首先就会执行构造函数。
上述的类中,构造函数有一个形参,所以定义一个对象时,必须要带形参。
若类中没有构造函数时,系统会自动生成一个没有形参的空构造函数,这时定义对象就可以不加形参了。
疑问:一个类中,有多个构造函数,首先会执行哪个构造函数?
解释:应该是根据构造函数的参数来确定执行构造函数。