正文

 

回到顶部

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
        
		

网友评论