C 之構造與析構(下)

2021-10-03 01:25:39 字數 2308 閱讀 7304

小插曲 類中的const成員

物件的銷毀

c++中的析構函式

array類的進化

建構函式與析構函式的呼叫秩序

類的內部可以直接呼叫類的建構函式嗎?

c++中的類可以使用其它類定義成員變數

問題:如何給物件成員進行初始化?

物件組合示例

分析:編譯錯誤,那麼如何給物件成員進行初始化?

語法規則

2.初始化列表先於建構函式的函式體執行

類中的const成員是肯定會被分配空間的

類中的const成員變數只是乙個唯讀變數

注意:編譯器無法直接得到const成員變數的初始值,因此無法進入符號表成為真正意義上的常量。

注意:如果在const定義處可以看到它的值,則為真正意義上的常量,進入符號表;

​ 否則為唯讀變數;

分析:類中的const int c; 為唯讀變數;

初始化是用已存在的物件或值對正在建立的物件進行初值設定

賦值是用已存在的物件或值對已經存在的物件進行值設定

區別:初始化:被初始化的物件正在建立

賦值:被賦值的物件已經存在

test() : c(1) //此處c為初始化

注意:析構函式不能過載

小結:析構函式是c++中物件銷毀時做清理工作的特殊函式

析構函式在物件銷毀時自動被呼叫

析構函式是物件所使用的資源及時釋放的保障

析構函式的呼叫秩序與建構函式相反

如果可以,直接呼叫建構函式會有什麼情況發生呢?

可以直接呼叫建構函式,直接呼叫建構函式將得到乙個臨時物件。

分析:mi和mj並沒有賦值為0;

c 構造與析構

c 中還提供了一些封裝方法 構造方法 析構方法 一 在宣告乙個類的物件後,要對該物件進行初始化,即對物件中的資料成員賦值 建構函式 用於建立乙個物件,提供初始化該物件的簡單手段 函式語法 建構函式的函式名必須與類名相同 它沒有返回值 作用為初始化物件 其呼叫是在宣告物件時候自動呼叫 python中的...

C 之建構函式與析構函式

首先,在棧裡宣告兩個物件bs sc,看看編譯器是如何自動呼叫的。includeusing namespace std class base base 執行結果顯示 first construct in base second construct in base construct in subcla...

C 之建構函式與析構函式

最近在學習c 每次看到繼承這段的時候,總是一邊感慨這門語言的難度,一邊感慨這門語言的神奇之處。最近看到了建構函式這段,問了自己這樣乙個問題,建構函式可以是虛函式嗎?不是很清楚,於是去查了一些資料。首先我覺得應該明確的乙個問題就是,虛函式的功能是c 中多型的一種實現方式。主要是繼承類的某些功能和基類的...