建構函式沒有返回值,不能被顯示的呼叫。它是在定義物件時由系統自動執行的,而且只執行一次。
如果沒有定義建構函式,系統會自動生成乙個建構函式,只是這個建構函式的函式體是空,沒有引數,也不執行任何初始化的操作。
帶引數的建構函式:
有一種簡練,方便的寫法——建構函式的引數初始化表
box(int h,int w,int l):heignt(h),width(w),length(l){} 其中height,width,length是類box的資料成員
預設建構函式:呼叫建構函式時不必給出實參的建構函式。有時也稱為預設建構函式。乙個類只能有乙個預設建構函式
帶預設引數的建構函式: 宣告函式時指定預設值。
(普通的函式中也可以使用有預設值的引數)
全部引數都指定了預設值的建構函式屬於預設建構函式(需注意,乙個類只能有乙個預設建構函式)。如果有全部引數都有預設值的建構函式,就不能再定義過載建構函式。
一般不應同時使用建構函式過載和帶預設引數的建構函式
複製建構函式(拷貝建構函式):引數是類物件
析構函式不返回任何值,沒有函式引數。因此
析構函式不能被過載,乙個類只能有乙個析構函式。
如果使用者沒有定義析構函式,編譯系統會自動生成乙個析構函式,但它不做任何的清理工作
一般情況下,宣告類的同時就定義析構函式。
什麼時候呼叫建構函式和析構函式,他們呼叫的順序:
同一儲存類別(儲存類別同樣適用於物件)中,先構造的後析構,後構造的先析構。
全域性物件和靜態物件的順序:
析構函式和建構函式
每個物件生成的時候都要完成物件的初始化,如設定屬性的初始值。c 中規定每個類都有乙個初始值,如果沒有,系統會產生乙個預設的建構函式。這個建構函式沒有任何引數,不做任何額外的工作。但往往我們會自己寫乙個建構函式,用來進行特殊的初始化工作。這樣的話,編譯器就不會再為其生成預設的建構函式。class 類名...
建構函式和析構函式
stock hot 因為資料部分的訪問狀態是私有的,程式不能訪問資料成員。建立stock的建構函式,由於需要為stock提供3個值,因此應為建構函式提供3個引數值,程式設計師可能指向設定company成員,而其他的設定為0 使用預設引數完成 宣告如下 stock const char co,int ...
建構函式和析構函式
一.建構函式 也是類的乙個成員函式 作用 在物件被建立時將物件初始化。就像定義基本型別變數時也可以同時賦值一樣,在定義物件時,也可以同時對其資料成員賦初值。這就稱為物件初始化 除一般成員函式的特徵的一些特殊性質 1.建構函式的函式名與類名相同,且沒有返回值 2.建構函式在物件被建立時將被自動呼叫 3...