定義新節點出現錯誤
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);
解釋:
在類中,有一種函數稱為構造函數,這種函數沒有函數類型,在定義一個對象時,首先就會執行構造函數。
上述的類中,構造函數有一個形參,所以定義一個對象時,必須要帶形參。
若類中沒有構造函數時,系統會自動生成一個沒有形參的空構造函數,這時定義對象就可以不加形參了。
疑問:一個類中,有多個構造函數,首先會執行哪個構造函數?
解釋:應該是根據構造函數的參數來確定執行構造函數。