今天看書,忽然發現自己對預設建構函式/建構函式的理解很模糊,在實際專案中寫類時,
這些細節問題並沒有涉及到。因此,就專門對著《c++ primer plus》將預設建構函式/構
造函式這一塊簡單總結一下。
建構函式:c++用於構建類的新物件時需要呼叫的函式,
該函式無返回型別!(注意:是「無」! 不是空!(void))。
預設建構函式:未提供顯式初始值時,用來穿件物件的建構函式。
以上是二者的定義,但是單從定義很難對二者進行區別,下面依然看**。
1上面的注釋中已標出了預設建構函式和建構函式。下面,對二者的區別進行簡單直白易懂的總結: .class
testclass
2;
1. 預設建構函式主要是用來完成如下形式的初始化的:
1在這種情況下,如果沒有提供預設建構函式,編譯器會報錯;testclass classa;2//
或者 testclass *classa = new testclass;
非預設建構函式在呼叫時接受引數,如以下形式:
1 testclass classa(12,'h'2. 如果程式猿沒有定義任何建構函式,則編譯器會自動定義預設建構函式,其形式如 testclass() {};);2//或者 testclass *classa = new testclass(12,'h');
可以看出,編譯器自動提供的預設建構函式是 啥也沒有啊 ;
3. 定義預設建構函式有兩種方式,如上述**展示的,一是定義乙個無參的建構函式,
二是定義所有引數都有預設值的建構函式 ;
4. 注意:乙個類只能有乙個預設建構函式!也就是說上述兩種方式不能同時出現,
一般選擇 testclass(); 這種形式的預設建構函式 ;
5. 只要程式猿定義了建構函式,編譯器就不會再提供預設建構函式了,
所以,程式猿最好再手動定義乙個預設建構函式,以防出現 testclass a; 這樣的錯誤。
C 建構函式與預設建構函式
建構函式 c 用於構建類的新物件時需要呼叫的函式,該函式無返回型別!注意 是 無 不是空!void 預設建構函式 未提供顯式初始值時,用來穿件物件的建構函式。以上是二者的定義,但是單從定義很難對二者進行區別,下面依然看 1 class testclass 2 上面的注釋中已標出了預設建構函式和建構函...
C 建構函式之預設建構函式
參考部落格 以下內容是在上述博主的部落格中提煉出來的 一 預設建構函式的含義是啥 主要就是 預設建構函式在呼叫的時候不需要顯示傳入實參的建構函式 二 預設的建構函式的分類 1 無參建構函式 就是沒有引數的建構函式 class sample 2 帶有形參,並且帶有預設值的建構函式 class samp...
C 預設建構函式
c 預設建構函式 一直認為若程式設計師沒有自己定義無引數的建構函式,那麼編譯器會自動生成預設建構函式,來進行對成員函式的初始化,但這種認為是有誤的,不全面的.預設的建構函式分為有用的和無用的,所謂無用的預設建構函式就是乙個空函式 什麼操作也不做,而有用的預設建構函式是可以初始化成員的函式。對建構函式...