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