我只是閱讀邁爾斯「更有效的C++ 35新方法」 - 第33項,他建議 總是要從抽象基類繼承而不是具體的。抽象類和多態使用數組
他聲稱,我不能完全理解的原因之一是,從一個抽象類繼承,多態處理數組(本書中的第3項)不是問題。
有人可以建議這是怎麼回事?
此外,我想聽聽是否永遠不會讓客戶端實例化其他派生類的好東西? (在他的書中邁爾斯是示出具有例如賦值運算符中的問題)的要求
代碼例如:
CLASS BST {....};
CLASS BlanacedBST ::公共BST {....}
空隙printBSTArray(ostream的& S,const的BST陣列[],INT包含numElements) { 對(INT I = 0;我<包含numElements; i ++) { s < < array [i]; } }
BST BSTArray [10]; printBSTArray(BSTArray); //正常工作
BlanacedBST bBSTArray [10]; printBSTArray(bBSTArray); //未定義的行爲(因爲下標操作符根據BST塊大小推進指針)
然後,他加入了避免從另一個concreat class(BST)繼承的concreate class(BlanacedBST)通常避免了這個問題 - 不管怎樣。
當有人建議做任何事情*永遠*或*永遠*你可以放心地忽略其餘。 – 2009-12-12 15:31:02
是的,它總是*安全地忽略其餘;-) – 2009-12-12 15:31:45
我沒有這本書,所以我不能解決你在這方面的具體問題,雖然我熟悉他的建議只有純粹抽象基類。也許你可以粘貼他使用的代碼示例? – Omnifarious 2009-12-12 17:48:41