C 的預設建構函式與建構函式

2021-07-30 10:40:30 字數 1033 閱讀 1183

今天看書,忽然發現自己對預設建構函式/建構函式的理解很模糊,在實際專案中寫類時,

這些細節問題並沒有涉及到。因此,就專門對著《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 *classa = new testclass(12,'h');

2. 如果程式猿沒有定義任何建構函式,則編譯器會自動定義預設建構函式,其形式如  testclass() {};  

可以看出,編譯器自動提供的預設建構函式是 啥也沒有啊 ;

3. 定義預設建構函式有兩種方式,如上述**展示的,一是定義乙個無參的建構函式,

二是定義所有引數都有預設值的建構函式 ;

4. 注意:乙個類只能有乙個預設建構函式!也就是說上述兩種方式不能同時出現,

一般選擇 testclass(); 這種形式的預設建構函式 ;

5. 只要程式猿定義了建構函式,編譯器就不會再提供預設建構函式了,

所以,程式猿最好再手動定義乙個預設建構函式,以防出現 testclass a; 這樣的錯誤。

C 建構函式與預設建構函式

建構函式 c 用於構建類的新物件時需要呼叫的函式,該函式無返回型別!注意 是 無 不是空!void 預設建構函式 未提供顯式初始值時,用來穿件物件的建構函式。以上是二者的定義,但是單從定義很難對二者進行區別,下面依然看 1 class testclass 2 上面的注釋中已標出了預設建構函式和建構函...

C 建構函式之預設建構函式

參考部落格 以下內容是在上述博主的部落格中提煉出來的 一 預設建構函式的含義是啥 主要就是 預設建構函式在呼叫的時候不需要顯示傳入實參的建構函式 二 預設的建構函式的分類 1 無參建構函式 就是沒有引數的建構函式 class sample 2 帶有形參,並且帶有預設值的建構函式 class samp...

C 預設建構函式

c 預設建構函式 一直認為若程式設計師沒有自己定義無引數的建構函式,那麼編譯器會自動生成預設建構函式,來進行對成員函式的初始化,但這種認為是有誤的,不全面的.預設的建構函式分為有用的和無用的,所謂無用的預設建構函式就是乙個空函式 什麼操作也不做,而有用的預設建構函式是可以初始化成員的函式。對建構函式...