Effective C++ 条款32

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()方法。

你可能感兴趣的:(继承关系)