c 解決二義性的方法

2021-08-04 21:38:48 字數 670 閱讀 3944

1樓:南霸天

解決方法:

法一 、類名限定:

呼叫時指名呼叫的是哪個類的函式,如:

c1.a::f();

c1.b::f();

法二、 同名覆蓋:

在c中宣告乙個同名函式,該函式根據需要內部呼叫a的f或者是b的f。如:

class c:public a,public b};法三、虛基類(用於有共同基類的場合):

virtual 修飾說明基類,如:

class b1:virtual public b

2樓:匿名使用者

b.初看題目,答案應該在bc之間.

我就只解釋錯誤的了.

假設:基類中有方法void cool(int i)派生類中也有方法void cool(int i)實際執行中派生類的cool方法會覆蓋基類中的同名方法.

因為基類的cool方法並沒有消失,仍然可以通過其他途徑呼叫.

所以,這樣編寫**時很容易造成混淆(二義性).

3樓:匿名使用者

同意b如:

class a

}class b : public a

}void main()

請問到底是呼叫a中的display,還是b中的呢?

這就產生二義性了!