C++为什么要使用公共,私有或受保护的继承?

Tim*_*Tim 12 c++ inheritance private protected public

那么有关于这个主题的足够信息.例如,这个线程对我来说非常清楚:私有,公共和受保护的继承之间的区别

除了一点; 为什么有用?

Tem*_*Rex 11

使用公共继承来反映is-a关系.这是继承的主要用途,尤其是与虚函数结合使用时.它允许重用接口,不仅可以通过新代码重用旧代码,还可以通过旧代码重用新代码!(因为在运行时调度虚函数).

在特殊情况下,使用私有继承来反映一个is-implemented-in-terms-of-relationship.这是一种常用的模式,通常可以通过组合达到相同的目标(将可能的基类作为数据成员).另一个缺点是,您可以轻松地对同一基类进行多次继承(两次或更多次删除),从而导致所谓的钻石问题.

避免使用受保护的继承,它表明您的类接口是依赖于客户端的(派生类与世界相对).这通常是由于具有多个责任的类,这表明重构成单独的类是合适的.