例如:
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 是否派生相同的基类的最佳/快速方法是什么?
一种可能但最慢的方法是一一比较虚拟表条目,如果两个虚拟表中都存在任何函数指针,那么我可以说它们是从同一个基类派生的。这效率不高。
任何意见?