#include#includeusing namespace std;
class foo
; virtual void func11()
void func2()
virtual void func3()
int data1;
static int data2;
};int foo::data2=1;
class afoo:public foo
void func11()
void func2()
void func3()
virtual void func4()
};class bfoo:public afoo
void func11()
void func2()
void func3()
void func4()
};int main(void)
輸出結果:
分析:(1)malloc和new的區別,malloc只分配記憶體,new不僅分配記憶體,還執行建構函式。
(2)如果乙個類中包含了虛函式,那麼它的每個物件就有乙個虛函式表,用乙個指標vptr指向這個虛表,虛表中的每一項指向乙個虛函式(你上面的例子只有乙個虛函式,所以虛表就一項)
(3)這個虛表的建立是在建構函式中完成的(這個過程我們看不到)
(4)(5)要想實現虛函式的特性,必須將基類函式定義為虛函式,帶有虛函式的子類函式不加virtual修飾符也具有虛函式的特性
#includeclass d{};
class e;
class a
f2()
};class b:public a
f2()
};void main()
結果: TEC EXAM 有關虛析構函式的問題
以多繼承中基類中的析構函式是否是virtual有關.多型的形式呼叫base1 p new derived 或者 derived der base1 p der 最後delete p的時,是否呼叫了其他的的如之類der中的函式以及base2的析構函式相關。可以看出如果沒有virtual的話,屬於安全有...
有關虛(virtual)析構函式
記得有一次在面試的時候被問到虛析構函式的作用,當時回答得不是很好,故現在想重新整理下。先看下下面的 include iostream using namespace std class base base 大家關鍵是看這句 virtual void f class derived public ba...
虛函式有關面試題
class a virtual void p virtual a class b public a void p b int main int,char 這段程式的輸出 abba 題目想構造乙個b類的物件,b繼承自a,所示首先構造a,a中構造函式呼叫p,雖然p是虛函式,按理來說應該動態繫結,但是此時...