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