預設建構函式(default constructor):類通過乙個特殊的建構函式來控制預設初始化過程,這個函式稱為預設建構函式。預設建構函式無須任何實參。
簡單來說,預設建構函式就是在呼叫時不需要顯示地傳入實參的建構函式
如果我們的類沒有顯示地定義建構函式,那麼編譯器就會為我們隱式地定義乙個預設建構函式。這個由編譯器建立的建構函式又稱為合成的預設建構函式(synthesized default constructor)
合成的預設建構函式只適合非常簡單的類,有三個原因:
下面提供兩個示例供大家理解為什麼有的時候編譯器不能為某些類合成預設的建構函式
示例1:
class
test1};
class
test2
;int
main()
//本例對應情況 1
//如果給test1宣告預設建構函式則編譯成功
示例2:
class
test1
;int
main()
//對應情況 2
[1] c++ primer(第5版)中文版 p236 C 預設建構函式
c 預設建構函式 一直認為若程式設計師沒有自己定義無引數的建構函式,那麼編譯器會自動生成預設建構函式,來進行對成員函式的初始化,但這種認為是有誤的,不全面的.預設的建構函式分為有用的和無用的,所謂無用的預設建構函式就是乙個空函式 什麼操作也不做,而有用的預設建構函式是可以初始化成員的函式。對建構函式...
c 預設建構函式
c 什麼時候合成預設建構函式?c 合成的預設建構函式都做些什麼?以下三個條件同時滿足 源程式中沒有宣告任何建構函式 編譯器需要該類有預設建構函式 程式中需要呼叫預設建構函式 預設建構函式是以編譯單元為單位生成的 什麼時候編譯器需要預設建構函式 該類中有 有預設建構函式 的成員物件 該類繼承乙個有預設...
C 預設建構函式
先說c 新手一般的誤解 1.任何乙個類如果沒有定義預設建構函式,編譯器會自動合成乙個預設建構函式。2.編譯器合成出來的預設建構函式,會顯式的設定類中成員變數的值。先看乙個最基本的例子 從圖中可以看到物件a並沒有被初始化,即編譯器沒有為類a合成乙個預設建構函式。其實c 標準委員會曾敘述,如果沒有任何使...