1
class Base{...};
class Sub1 : public Base{...};
class Sub2 : public Base{...};
Sub1 s1;
Sub2 s2;
bool is_same_base(void *obj1, void *obj2){
...
}
if(is_same_base(s1,s2){
printf("Great! S1 and S2 and from same base class!\n");
}
在這種情況下,我不知道什麼是知道如果OBJ1和OBJ2派生相同的基類的最佳/快呢?
一種可能的最慢的,但方法是比較虛擬表項一個接一個,如果有的話函數指針存在於這兩個虛擬表,那麼我可以說它們是從相同的基類派生的。這不是有效的。
有何評論?
如果你知道你正在比較哪個基類,你可以使用'dynamic_cast'來解決這個問題 – 2012-04-19 20:46:37
你是否必須使用簽名'bool is_same_base(void * obj1,void * obj2)'? – GManNickG 2012-04-19 20:46:49
必要的運行時間還是編譯時間? – pmr 2012-04-19 20:47:51