最近我研究了《Inside COM》这本书,我找到了一个代码示例,如下所示:接口定义为结构。IX 和 IY 继承了 IUnknown。CA 类继承 IX 和 IY。据我所知,在这种情况下CA应该有两个虚点指向虚函数,一个属于IX,另一个属于IY?
Interface IUnknown
{
virtual void QueryInterface() = 0;
virtual void AddRef() = 0
virtual void Release() = 0;
};
Interface IX : IUnknown
{
void X()
{
printf("X()\n");
}
};
Interface IY : IUnknown
{
void Y()
{
printf("Y()\n");
}
};
class CA : public IX, public IY
{
public:
void QueryInterface()
{
printf("QueryInterface()\n");
}
void AddRef()
{
printf("AddRef()\n");
}
void Release()
{
printf("Release()\n");
}
};
我的问题是为什么 CA 只实现了 QueryInterface()、AddRef()、Release() 并且代码可以工作。为什么不存在QueryInterface()、AddRef()、Release()的实现是属于IX还是属于IY的模棱两可的问题。
谢谢。