两个基类(接口)中有一个完全一样的纯虚函数,衍生类中只有一份实现,但可以正常编译、运行。为什么

两个基类(接口)中有一个完全一样的纯虚函数,派生类中只有一份实现,但可以正常编译、运行。为什么?

struct InterfaceA
{
virtual void function() = 0;
};

struct InterfaceB
{
virtual void function() = 0;
};

class Object
: public InterfaceA
, public InterfaceB
{
public:
void function() override
{
return ;
}
};

int main()
{
Object o;
InterfaceA* ia = &o;
InterfaceA* ib = &o;
ia->function();
ib->function();
o.function();
return 0;
}


为什么ia、ib和o都可以正常调用function?总感觉看起来很变扭。
那位大牛能给我解释一下!!!
------解决方案--------------------
你不需要对它熟。凡是必须要倚靠此结构的编程行为,都不是正规编程行为。
引用:
其实我想知道的是虚表的结构,我对虚表不太熟。

------解决方案--------------------
这个代码非常规范。
你要真好奇心强,就去啃《深度探索C++对象模型》。啃过了,你就发现完全是浪费生命。