建構函式析構函式和拷貝建構函式

2021-09-26 08:58:13 字數 820 閱讀 6157

建構函式:建立類物件,並初始化其值。

1.傳參

2.按照類成員宣告順序依次構造其成員

3.執行建構函式函式體

析構函式:用來完成物件被刪除前的一些清理工作(釋放類物件)

1.執行析構函式函式

2.按照類中成員變數宣告順序的逆序依次析構其成員

初始化列表:初始化物件成員(呼叫成員物件的帶參構造)

形式:在建構函式函式首部之後,函式體之前,其書寫順序不影響建構函式執行順序

拷貝建構函式:

定義:當用乙個已經存在的物件去初始化乙個新物件時,會呼叫拷貝建構函式

功能:把初始值物件的每個資料成員的值都複製到新建立的物件中

1.一般方法:

class 類名

;類名::類名(類名&物件名); //複製建構函式的實現

2.普通建構函式是在物件建立時被呼叫,而拷貝建構函式在一下3種情況下都會被呼叫

(1)當用類的乙個物件去初始化該類的另乙個物件時。

例如:

int main()

int main()

解析:表面上函式g將a返回給了主函式,但是a是g()的區域性物件,離開建立它的函式g以後就消亡了,不可能返回主函式後繼續生存所以在這種情況時編譯系統會在主函式值建立乙個無名臨時物件,該臨時物件的生存期只在函式呼叫所處的表示式中,也就是表示式b=g()中,執行語句return a;時,實際上是呼叫拷貝建構函式將a的值複製到臨時物件中,函式g執行結束時物件a消失,但臨時物件會存在於表示式b=g()中,計算完這個表示式後,臨時物件的使命也就完成了,該臨時物件便會自動消失。

建構函式 析構函式和拷貝建構函式

建構函式是乙個特殊的成員函式,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資料成員都有 乙個合適的初始值,並且在物件的生命週期內只呼叫一次。建構函式是用來初始化物件的 其特徵如下 函式名與類名相同。無返回值。物件例項化時編譯器自動呼叫對應的建構函式。建構函式可以過載。class dat...

建構函式 拷貝建構函式 析構函式

1.如果定義了兩個預設建構函式,vc只回給出warning.2.如果有預設引數的預設構造,如果你給了第乙個預設的話 所有傳遞引數都要有預設植 否則報錯.不過如果是第乙個引數的預設值沒有給出的話,編譯器卻看不出問題,但是沒有 試過這種情況建構函式能不能正常工作.建構函式 用來初始化物件的資料成員,與類...

C 建構函式 析構函式 拷貝建構函式

建構函式 析構函式 拷貝建構函式 如果類成員變數有初始值,用這些初始值初始化成員變數 如果類成員變數沒有初始值,則預設初始化該成員變數 class student int main 使用注意事項 語法 這個預設建構函式之所以對student有效,是因為我們為內建型別的資料成員提供了初始值 如果你的編...