Effective C++ 32
Public继承在c++中的作用:
如果derived class继承类通过public继承方式继承自base class基类,那么程序员就默认基类的功能在派生类中都能实现。否则这种继承就是失败的继承。
举个例子,鸵鸟和鸟的关系。在现实生活中可以认为这种继承关系是对的,自然的。可是,在C++程序中这种关系却可能存在问题。
比如,飞行功能fly()被认为是鸟的基本属性,但是对于鸵鸟却行不通。如果基类中有个virtual fly()函数,通过public继承,就是默认鸵鸟也具有这种能力,但是这却违反常理。
class Bird { virtual void fly(){....} };
class Ostrich:public Bird { }
Ostrich os;
os.fly();//调用成功
为了克服这种问题,最好的方法就是去掉Bird类中的fly()方法。