正文
1. 为什么不要重新定义继承而来的非虚函数——实际论证
假设我告诉你一个类D public继承类B,在类B中定义了一个public成员函数mf。Mf的参数和返回类型并不重要,所以假设它们都是void。实现如下:
1 class B {2 public:3 void mf();4 ...5 };6 lass D: public B { ... }
我们不需要了解B,D或者mf的任何细节,考虑一个类型D的对象x,
1 D x; // x is an object of type D
你会感到很吃惊,如果下面的语句:
1 B *pB = &x; // get pointer to x2 3 pB->mf(); // call mf through pointer
同下面的语句行为不一样
1 D *pD = &x; &n