C 虛函式繼承操作

2021-06-21 02:34:45 字數 888 閱讀 3968

using namespace std;

class classa

~classa()    

void f1()    

virtual void f2()    

};class classb : public classa

~classb()    

void f1()    

void f2()    

};void main(int argc, _tchar* argv)

結果輸出:

classa()  // 先呼叫a的建構函式

classb()  // 再呼叫b的建構函式

classa::f1()

classb::f2()

~classa() // 呼叫a的析構函式

classa() 

classb()

classb::f1()

classb::f2()

~classb() // 先呼叫b的析構函式

~classa() // 再呼叫a的析構函式

2、如果析構函式定義為虛函式(類a中析構函式為:virtual~classa()    ),則輸出:

classa()  // 先呼叫a的建構函式

classb()  // 再呼叫b的建構函式

classa::f1()

classb::f2()

~classb() // 先呼叫b的析構函式

~classa() // 再呼叫a的析構函式

classa() 

classb()

classb::f1()

classb::f2()

~classb() // 先呼叫b的析構函式

~classa() // 再呼叫a的析構函式

虛函式 虛繼承 C

關於虛表,我們就要用到乙個關鍵字 virtual,可以修飾函式,也可以修飾類。類的成員函式被virtual修飾之後,就成為了虛函式 修飾類,主要是虛繼承。在此之前,我們首先要了解乙個概念 物件模型,也就是說,乙個基類形成之後,裡面的成員是怎麼存放的,當派生類繼承基類之後,派生類的成員是怎麼存放的。我...

C 繼承 虛函式

part 1.虛函式 關於c 繼承,我們先來看一小段 base表示基類,derived表示base的繼承類。include using namespace std class base base void print protected protected許可權,繼承類可訪問 int base a,...

c 虛函式和虛繼承

c 中,多型的實現需要虛函式,而虛函式主要包括兩部分,虛函式指標和虛函式表。基類將自己的一些函式設為虛函式,子類則需要在繼承基類後,重寫或者直接使用從基類的繼承下來的虛函式。基類自己會儲存乙份虛函式表,這個虛函式表含有指向基類虛函式的虛函式指標。當子類繼承基類後,同樣會將基類的虛函式表繼承下來,這樣...