最近、私は「Inside COM」という本を研究しましたが、以下の部分のコードサンプルを見つけました。インターフェイスは構造体として定義されています。IXとIYはIUnknownを継承します。CAクラスはIXとIYを継承します。私の知る限り、この場合、CAは仮想関数への2つの仮想ポイントを持つ必要があります。1つはIXに属し、もう1つは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に属しているというあいまいな問題がないのはなぜですか。
ありがとう。