我發現在編寫接受主類或子類參數的函數(使用函數重載)時,通常會發生隱式上傳(子類被升級爲主類並調用主類函數)。我不希望發生這種隱式的上傳,因爲它意味着細微的錯誤潛入並導致後來的問題。隱含的上傳問題
我已經在谷歌上搜索了這方面的信息,但是我可以利用的只有很少的連貫信息,只能間接引用它。
如何禁用,停止或防止隱式上傳(甚至是向下轉換)?
(我無法提供任何示例代碼,因爲這是不時發生的一般問題)。
不,這不是與方法(我會指定方法),但功能。
沒有示例代碼,但僞概念: void Function(BaseClass & A); void Function(SubclassClass & B);
Function(ASubclass); //Implicit upcasting occurs, calls BaseClass instead
上述情況不會發生傳統(說是SubclassClass函數被淘汰/擦除),但子類向上轉型到BaseClass的與基類的功能使用,而是說,報告的錯誤或者產生一個警告 - 或者會有幫助,因爲我不想隱式的上傳發生。
請不要混淆upcasting與非虛擬方法調用。
「我無法提供......」我敢打賭,如果您嘗試過,並且結果的質量會更高。一般問題會得到一般答案;具體問題會得到具體答案。 –
顯示您的問題的代碼示例,將有助於回答這個問題 –
最有可能的是,您的設計根本不正確。派生類在通過基地進行尋址時必須表現「好像」它是基類,所以這些「微妙的錯誤」可能是違反了這個承諾的結果。 –