c++类继承(几乎)应该总是公共的吗?
Should C++ class inheritance (almost) always be public?
继承类时应该总是添加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
,基类的属性和方法是隐藏的。这意味着,如果您有派生类的指针,编译器将不允许您调用基类的公共方法。
相关文章:
- 继承函数的重载解析
- 继承期间显示未知行为的子类
- 头文件-继承c++
- 为什么在保护模式下继承升级不起作用
- 通过继承类使用来自不同命名空间的运算符
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 复制几乎为空的数组的最快方法
- 混合组合和继承的C++问题
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 从类继承时,继承的类是否会通过父类重新定义继承的变量
- 公共与私人继承
- 如何创建从同一类继承的不同对象的向量
- 如何从另一个文件继承私有成员变量和公共函数
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 带有继承的C++工厂
- 我应该避免多重实现继承吗
- C++继承更改成员
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- c++:几乎相同的头文件,但其中一个给出了一个特殊的与继承相关的错误
- c++类继承(几乎)应该总是公共的吗?