rt。。面試常問的題
首先c++的虛函式機制是用來實現物件導向程式設計時的多型機制的。多型(polymorphism)是允許你將父物件設定成為與乙個或更多的他的子物件相等的技術。
簡單的說:就是允許將子類型別的指標賦值給父類型別的指標。這樣在定義乙個基類的指標物件p1後,可以通過p1來呼叫各個子類的函式以實現對基類函式的重寫。
示例**1:
#includeusing namespace std;
class a
輸出結果為:
this is a..
this is a..
為了解決基類按指標也能實現對各個子類函式的呼叫以輸出不同的結果,這時候需要用到c++的關鍵字virtual .直接加在基類的函式前即可(基類若是定義成純虛函式,則子類中對應的函式全部預設為虛函式,不用再加關鍵字)。
示例**3:
#includeusing namespace std;
class a
執行結果即為:
this is a..
this is b..
示例3才叫真正實現了多型。
另外,如果只想在基類中宣告乙個純虛函式而不實現它,只需在函式後面加入"=0"即可。基類的函式宣告成純虛函式後,就可以在繼承自它的子類下實現對基類函式的重寫。
示例**4:
#includeusing namespace std;
class a
輸出結果即為:
this is b..
c 虛函式機制
今天看到一道c 筆試題,描述如下 include stdio.h class a class b public a virtual void test class c public b void main 輸出是什麼?正確的答案是 c testb test為什麼呢,明明func函式並不是虛函式 b ...
C 虛函式實現機制
看完之後,對c 中的虛函式實現機制算的上是恍然大悟,但是個人感覺博文中有幾點不足之處,現在一一枚舉,以下語言僅僅代表個人看法 1.定位虛表的方式 大家都知道含有虛函式的類的例項裡面前4個位元組是虛函式指標占用的記憶體,裡面填充的是虛函式表的位址號。原博文中通過乙個long型別的物件取得前四個位元組的...
c 虛函式實現機制
1 c 實現多型的方法 其實很多人都知道,虛函式在c 中的實現機制就是用虛表和虛指標,但是具體是怎樣的呢?從more effecive c 其中一篇文章裡面可以知道 是每個類用了乙個虛表,每個類的物件用了乙個虛指標。具體的用法如下 class a class b public a a,b的實現省略 ...