62,614
社区成员
发帖
与我相关
我的任务
分享
Person p = new Son();
之前看过一句很经典的话:编译看左,运行看右!
就是说,Person能调用Son,这是在编译的时候检查的,只要有继承实现关系,都能通过检查;
而运行时,实际上调用的是Son类。(这就是楼主的问题答案,实际调用的都是右边的)
#include <iostream>
using namespace std;
class IHello{
public:
virtual void Hello();
};
class IWorld{
public:
virtual void World();
};
class HelloWorld: public IHello, public IWorld{};
void IHello::Hello(){
cout<<"Hello"<<endl;
}
void IWorld::World(){
cout<<"World"<<endl;
}
int main(){
IHello* hello = new HelloWorld;
IWorld* world = (IWorld*)(void*)hello;
world->World();
}