2013-06-02 45 views
4

我在一本書中讀到,多態性是通過三級指針(使用vtable)在C++中實現的,但是還有其他方法在C++中實現它。多態如何在C++等語言的低層實現?

+0

其實@Mat我正在尋找具有多態性的標籤,這就是爲什麼我無法找到你在這裏提到的答案。 Anywayz thanx。 – AbKDs

回答

0

虛擬函數也可以用這樣的函數指針直接實現。

struct A 
{ 
    void (*foo)(A *thiz); 
    void (*goo)(A *thiz, int x); 
}; 

但顯然這比正常的實施效率低。實際上,在處理乘法繼承和虛擬基類時,C++實現可能會有所不同。

+0

@Mat參考[替代虛擬機制實現]中挑選的答案(http://stackoverflow.com/questions/4352032/alternative-virtual-mechanism-implementations)?. – BlueWanderer

+0

@Mat允許我在發佈評論前開始輸入答案。並讓我相信有人知道vtable可以理解我的解釋。沒關係。 – BlueWanderer