C 知識點10 建構函式和析構函式

2021-08-21 11:59:39 字數 984 閱讀 3992

生成物件時呼叫建構函式

生成派生類物件時先呼叫基類建構函式在呼叫派生類建構函式

#include 

using namespace std;

class base

};class derived:public

base

輸出結果為:

base

derived

撤銷物件時呼叫析構函式

撤銷派生類物件時,先呼叫派生類的析構函式再呼叫基類的析構函式。

#include 

using namespace std;

class base

//virtual ~base(){}

~base()

~derived()

輸出結果為:

derived

base

基類指標指向派生類物件時,撤銷指標

當基類析構函式不叫virtual關鍵字,則下列**輸出結果為base(只呼叫基類析構函式)

#include 

using namespace std;

class base

~base();

class derived:public

base

~derived()

基類指標指向派生類物件時,

當基類析構函式加virtual關鍵字時,撤銷指標先呼叫派生類析構函式再呼叫基類析構函式

輸出結果:

derived

base

#include 

using namespace std;

class base

virtual ~base();

class derived:public

base

~derived()

C 知識點4 構造和析構

構造和析構 類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。預設的建構函式沒有任何引數,但如果需要,建構函式也可以帶有引數。這樣在建立物件時就會給物件賦初始...

建構函式和析構函式的呼叫順序 引申知識點

建構函式的呼叫順序如下 1.基類建構函式。如果有多個基類,則建構函式的呼叫順序是某類在類派生表中出現的順序,而不是它們在成員初始化表中的順序。2.成員類物件建構函式。如果有多個成員類物件則建構函式的呼叫順序是物件在類中被宣告的順序,而不是它們出現在成員初始化表中的順序。3.派生類建構函式。注 類不能...

C 知識梳理 建構函式和析構函式

類的建構函式是類的一種特殊的成員函式,它會在每次建立類的新物件時執行。建構函式的名稱與類的名稱是完全相同的,並且不會返回任何型別,也不會返回 void。建構函式可用於為某些成員變數設定初始值。對於建構函式有以下幾點需要注意 c 預設建構函式是對類中的引數提供預設值的建構函式,一般情況下,是乙個沒有引...