摘要: 修改重写方法的特征 在大多数情况下,我们重写(override)一个 virtual 方法是为了改变它的实现。然后,有时我们却想改变该 virtual 方法的其他的特征,这往往会带来一系列问题。 1)改变方法的返回值类型 通常,子类在重写方法时,要保持与父类一致的函数原型,方法的实现可以改变,但是原型需要保持不变。 然而,事实却并非如此。在C++中,如果父类的 virtual 方法的返回值... 阅读全文
posted @ 2015-04-06 18:23 Acjx 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 多重继承常常被认为是 OOP 中一种复杂且不必要的部分。多重继承面临 crash 的场景并非难以想象,来看下面的例子。 1. 名称冲突 来看以下情况: 如果 Dog 类以及 Bird 类都有一个名为 eat() 的方法,而子类又没有 override 该方法。如果此时调用子类的 eat() 方法,编译器就会报错,指出 eat() 的调用有歧义(不知道是调用从 Dog 类继承而来的 eat... 阅读全文
posted @ 2015-04-06 15:35 Acjx 阅读(2057) 评论(1) 推荐(1) 编辑