no matching constructor for initialization


定义新节点出现错误

 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);

解释:

在类中,有一种函数称为构造函数,这种函数没有函数类型,在定义一个对象时,首先就会执行构造函数。

上述的类中,构造函数有一个形参,所以定义一个对象时,必须要带形参。

若类中没有构造函数时,系统会自动生成一个没有形参的空构造函数,这时定义对象就可以不加形参了。

 

疑问:一个类中,有多个构造函数,首先会执行哪个构造函数?

解释:应该是根据构造函数的参数来确定执行构造函数。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM