c++类继承(几乎)应该总是公共的吗?

Should C++ class inheritance (almost) always be public?

本文关键字:继承 几乎 c++      更新时间:2023-10-16

继承类时应该总是添加public关键字吗?执行以下代码时:

class Derived : public Base {
}

我认为在99%的情况下这样做是正确的。对吧?

这取决于你在寻找什么模型。

选自Scott Myers - Effective c++第三版(推荐阅读,顺便说一句):

public继承意味着"is-a"。如果你写的类D ("Derived")公开继承自class B ("Base"),你是在告诉c++编译器(以及你代码的人类读者)D类型的每个对象也是B类型的对象,但不是相反

private继承意味着"按照"

是的,因为这与其他面向对象编程语言(如c#或Java)的继承行为相匹配。

如果你使用private而不是public,基类的属性和方法是隐藏的。这意味着,如果您有派生类的指针,编译器将不允许您调用基类的公共方法。