析構函式 建構函式

2021-08-22 04:29:47 字數 932 閱讀 2627

建構函式:一般用於物件的初始化

函式原型:例宣告乙個cperson類(成員變數即成員方法的宣告暫且不加,下同)  則其預設生成建構函式原型為

cperson()

{}     

即必須與類名相同

建構函式特點及使用法則:

特點:1.建構函式無返回值

2.函式可以過載(使用者可以自行更改建構函式中的引數,以實現自定義的初始化形式,且當自定義的過載建構函式存在時,系統不再生成預設建構函式而是呼叫自定義的過載建構函式)

使用法則:

1.當乙個物件生成時,必定會呼叫乙個建構函式(自定義或系統生成)

2.建構函式不可手動呼叫(即不能像其他函式一樣呼叫方式)

例:cperson person;可行(自動呼叫的無參建構函式)。  cperson person(帶參);可行(自動呼叫的自定義過載函式)。

cperson person();不可行(此時相當於呼叫乙個prerson函式)。 person.cperson();不可行(此時屬於主動呼叫)

析構函式:主要用於程式結束時的空間清理工作

函式原型:~cperson()

{}即在類名前加乙個~。

析構函式特點及使用情景:

特點:1.無函式返回值

2.沒有引數

3.不可過載

使用情景:

1.物件開闢的記憶體位於棧上:此時在程式結束時,系統會自動呼叫析構函式,檢索物件在棧上使用的記憶體,從而進行空間清除(系統呼叫析構函式的順序與每乙個物件壓入棧的順序相反)

2.物件開闢的記憶體位於堆上:此時壓入棧的只是對物件開闢記憶體的乙個標識,析構函式無法通過標識對堆上的記憶體空間進行操作,故需要使用delete函式來指引析構函式,從而完成對堆上記憶體空間的清理。

注:析構函式可以主動呼叫,但是主動呼叫可能會出現與系統呼叫析構函式重複針對同一塊空間的情況,從而導致程式崩潰,故不建議主動呼叫析構函式。

建構函式 析構函式 虛析構函式

說析構函式之前,先說下建構函式。建構函式用來完成對物件的一系列初始化操作,主要作用有 1.給建立的物件建立乙個識別符號 2.為物件資料成員開闢記憶體空間 3.完成物件資料成員的初始化 當並未顯示的定義建構函式時,會生成乙個預設的建構函式,預設建構函式不能完成物件資料成員的初始化,只能給物件建立一識別...

建構函式 析構函式

是在物件被建立時自動呼叫的函式,將物件初始化為乙個特定的狀態 建構函式的形式 c 11中可以用clock default 來生成預設建構函式 是指類的物件在建立的時候,能使用已有的物件之間初始化它。或者是在類的物件在作為函式形參的時候,或者類的物件在作為函式返回值的時候 作為複製的機制需要自動拷貝型...

構造 析構函式

e09不能在構造 析構函式中呼叫虛函式 類名 default 隱式宣告為內聯函式,在類外定義時使用default則不是內聯函式cp449 類名 給定實參 成員1 實參1 1.最好按照宣告次序進行初始化ep29,cp259 2.效率高於函式體拷貝初始化 3.delegating constructor...