假設我有一個基類A
和三個從A
派生的類,稱爲類x
,y
,z
。現在,類x
有一個函數成員f
,我想通過多態性從類A
指針訪問。如何在存在多個派生類時使用基類指針訪問派生類的函數成員?
我知道我還必須定義類A
中的相應虛函數,否則,我會得到類似"class A has no member named f"
的錯誤。但是,如果我在A
中定義了虛函數,我還需要在y
和z
中定義f
,否則會提出錯誤說明"y and z are of abstract class type"
。但有時,f
就像是一個特徵函數,只與x
類有關,並且在類y
和z
中定義是沒有意義的,儘管我可以在y
和z
中沒有給出任何內容。
我的問題是在上面的情況,我該怎麼辦?
重新設計您的類層次結構,以便只調用'f'的代碼只獲取引用或指向'x'的指針,而不是'A'。 –
爲什麼不使f非純虛擬,並給予基類的默認實現。並有f()只與x有關,而不是在y和z是暗示遺傳不良 –
@LorenceHernandez我想知道爲什麼你認爲* f()只與x有關,而不是y和z是不良繼承的提示*。孩子班有其父母班沒有的某些功能,其他的孩子班是不是也很自然和普遍?謝謝 – Nicholas