仮想関数の衝突事故による被害

今更気付いたのだが、

struct Foo {
	virtual void print();
};
struct Bar {
	virtual void print();
};
struct FooBar : public Foo, public Bar {
	void print(); // オメガモンとか、ゴジータとか。
};

両方の基底クラスのprintに違う実装ができないとかふざけていると思う。
とはいえC++/CLI(多分C#も)のoverride, sealed, newはややこし過ぎる。見たとき死ぬかと思った。思ったけどそうでもなかった。