定义新节点出现错误
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);
解释:
在类中,有一种函数称为构造函数,这种函数没有函数类型,在定义一个对象时,首先就会执行构造函数。
上述的类中,构造函数有一个形参,所以定义一个对象时,必须要带形参。
若类中没有构造函数时,系统会自动生成一个没有形参的空构造函数,这时定义对象就可以不加形参了。
疑问:一个类中,有多个构造函数,首先会执行哪个构造函数?
解释:应该是根据构造函数的参数来确定执行构造函数。