C ++类继承(几乎)是否应该公开?

时间:2015-07-19 22:53:02

标签: c++

继承课程时,我是否应始终添加public关键字?在执行此代码时:

class Derived : public Base {

}

我认为在99%的案例中这是正确的做法。正确?

2 个答案:

答案 0 :(得分:7)

这取决于您要寻找的型号。

来自Scott Myers - Effective C++ Third Edition(建议阅读,顺便说一句):

  

public继承意味着“是-a”。如果您编写该类D(“Derived”)公开继承自class B(“Base”),那么您告诉C ++编译器(以及您的代码的人类读者)每个类型的对象{ {1}}也是D类型的对象,但反之亦然

  

B继承意味着“is-implemented-in-terms-of”

答案 1 :(得分:2)

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

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