- 论坛徽章:
- 0
|
2个子类的虚函数表可能一样嘛?
比如:
下面的Dog和Cat类,应该说他们的虚函数表都是Pet::foo()啊,因为他们自己都没有覆
盖重新写foo函数,所以虚函数表是不是一样??
可是下面dynamic_cast起作用了。dynamic_cast不是从vTABLE中得到信息的嘛,可是这
里2个子类都没有定义自己的虚函数啊,都是继承父类的虚函数,应该分不出来才对啊。
也即:
1:这2个子类,Cat,Dog的虚函数表是一样的嘛?
2:如果这2个子类的虚函数表一样,那么dynamic_cast怎么知道基类指针指的是哪个子类
对象啊。
请指教。
谢谢。
#include <iostream>;
using namespace std;
class Pet { public: ~Pet(){}
virtual void foo(){}
#include <iostream>;
using namespace std;
class Pet { public: ~Pet(){}
virtual void foo(){}
};
class Dog : public Pet {};
class Cat : public Pet {};
int main() {
Pet* b = new Cat; // Upcast
// Try to cast it to Dog*:
Dog* d1 = dynamic_cast<Dog*>;(b);
// Try to cast it to Cat*:
Cat* d2 = dynamic_cast<Cat*>;(b);
cout << "d1 = " << (long)d1 << endl;
cout << "d2 = " << (long)d2 << endl;
} ///:~ |
|