私はこのコードを試しました:
struct FaceOfPast
{
virtual void Smile() = 0;
};
struct FaceOfFuture
{
virtual void Smile() = 0;
};
struct Janus : public FaceOfPast, public FaceOfFuture
{
virtual void Smile() {printf(":) ");}
};
..。
void main()
{
Janus* j = new Janus();
FaceOfFuture* future = j;
FaceOfPast* past = j;
future->Smile();
past->Smile();
delete j;
}
意図したとおりに機能します(2つのスマイリーフェイスを出力します)が、あいまいSmile()
であることを再宣言してコンパイルする必要はないと思います。Janus
それはどのように(そしてなぜ)機能しますか?