我只是阅读迈尔斯“更有效的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