C++是否具有不使用vtable的接口的正確實現?C++是否有一個不使用vtable的接口的靜態多態實現?
例如
class BaseInterface{
public:
virtual void func() const = 0;
}
class BaseInterfaceImpl:public BaseInterface{
public:
void func(){ std::cout<<"called."<<endl; }
}
BaseInterface* obj = new BaseInterfaceImpl();
obj->func();
在最後一行調用FUNC去VTABLE找到BaseInterfaceImpl :: FUNC的FUNC PTR,但沒有任何C++的方式直接完成,由於BaseInterfaceImpl不從純粹的接口類BaseInterface除了其他任何類的子類?
謝謝。吉爾。
爲什麼你會在乎它是否通過vtable? – Thomas 2010-04-06 19:14:25
因爲我正在一個速度無關緊要的項目上工作。另外,我認爲vtable是完整的oo多態性的一個很好的解決方案,但是實現'接口'的矯枉過正,我希望會有一些更輕的解決方案存在.. – gilbertc 2010-04-06 19:24:39
@gilbertc:我認爲這裏有一個誤解。 *接口概念的任何*「適當」實現都將經歷類似於vtable的事情。否則,動態多態將是不可能的。 – Thomas 2010-04-06 19:24:48