new一個對象后面加括號與不加括號的區別
加括號與不加的區別
(1)加括號
1. 若括號為空,即無實參項,那么理解為調用默認構造函數;
2. 若括號非空,即有實參項,可以理解為調用重載構造函數,或 復合默認構造函數。
(2)不加括號
調用默認構造函數,或復合默認構造函數。
默認構造函數 與 復合默認構造函數的區別
默認構造函數:編譯器會為每一個類默認提供一個構造函數,稱之為默認構造函數。默認構造函數一般參數為空。
復合默認構造函數:一個由用戶自定義的所有形式參數都賦有默認值的構造函數,稱之為復合默認構造函數。
兩者聯系:
一個類中,若一旦有一個用戶自定義構造函數,那么由編譯器提供的默認構造函數就不再存在。用戶自定義的構造函數為默認構造函數的重載版。
默認構造函數不復存在時,用戶必須為這個類再自定義一個復合默認構造函數(選所有自定義構造函數其中之一,把形式參數均賦默認值即可)。
不論自定義構造函數(即構造函數的重載版)有多少個,只允許有一個復合默認構造函數。