不要将多态应用于数组:
指针运算是通过指针的类型进行的;
多态通过虚函数表实现的;
不要在数组上使用多态!!
被实际开发经验抛弃的多继承:
工程开发中真正意义上的多继承是几乎不被使用的;
多重继承带来的代码复杂性远多于其带来的便利;
多重继承对代码维护性上的影响是灾难性的;
在设计方法上,任何多继承都可以用单继承代替;
C++中对多继承二义性的解决方案:
虚继承:
为了解决从不同途径继承来的同名数据成员造成的二义性问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝。
绝大多数面向对象语言都不支持多继承:
绝大多数面向对象语言都支持接口的概念;
C++ 中没有接口的概念;
C++ 中可以使用纯虚函数实现接口;
接口类中只有函数原型定义,没有任何数据的定义;
实际工程经验证明:
多重继承接口不会带来二义性和复杂性等问题;
多重继承可以通过精心设计用单继承和接口来代替;
接口类只是一个功能说明,而不是功能实现;
子类需要根据功能说明定义功能实现;