我剛剛試過這段代碼:多重繼承:2Classes1Method
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;
}
它按預期工作(輸出兩個笑臉),但我不認爲它應該編譯,Janus
中的Smile()
重新聲明含糊不清。
它是如何工作的?
這個問題似乎並不是關於調用部分,而是重新定義的部分:爲什麼您只需編寫一個方法就可以重新定義2個不同類中的同名2個虛函數? – alexisdm 2012-04-24 12:31:54