据我了解,这是在 C++ 中进行子类化的唯一方法:
class ParentClass {
...
}
class ChildClass : public ParentClass {
...
}
为什么需要“:public”?子类是否总是从父类继承所有公共和受保护的变量和方法?
我不确定为什么不能使用它:
class ChildClass : ParentClass {
据我了解,这是在 C++ 中进行子类化的唯一方法:
class ParentClass {
...
}
class ChildClass : public ParentClass {
...
}
为什么需要“:public”?子类是否总是从父类继承所有公共和受保护的变量和方法?
我不确定为什么不能使用它:
class ChildClass : ParentClass {
它不是必需的,尽管私有继承是一种代码味道,因为它不能完全反映 is-a 关系(继承也应该如此)。
class ChildClass : ParentClass
相当于
class ChildClass : private ParentClass
这并不意味着ChildClass
只继承基类的私有成员,而是将它们的可访问性限制在指定的级别。这意味着继承基类的方法在派生类中变为私有。
如果你没有public
那里,它将相当于以下内容:
class ChildClass : private ParentClass
这是因为class
sprivate
默认具有访问权限。
此外,private
和protected
是public
调用访问说明符。这与继承的内容无关,而是您可以在派生类中访问的内容。
如果你想有默认public
继承,使用 astruct
代替:
struct ChildClass : ParentClass
以上等价于struct ChildClass : public ParentClass
因为struct
spublic
默认具有访问权限。
C++ 还允许受保护继承和私有继承。
类默认为私有。结构默认为公共。
您还可以拥有私有和受保护的继承。你在这里有什么
class ChildClass : ParentClass {
将导致私有继承。