0

据我了解,这是在 C++ 中进行子类化的唯一方法:

class ParentClass {
    ...
}

class ChildClass : public ParentClass {
    ...
}

为什么需要“:public”?子类是否总是从父类继承所有公共和受保护的变量和方法?

我不确定为什么不能使用它:

class ChildClass : ParentClass {
4

4 回答 4

1

它不是必需的,尽管私有继承是一种代码味道,因为它不能完全反映 is-a 关系(继承也应该如此)。

class ChildClass : ParentClass

相当于

class ChildClass : private ParentClass

这并不意味着ChildClass只继承基类的私有成员,而是将它们的可访问性限制在指定的级别。这意味着继承基类的方法在派生类中变为私有。

于 2012-09-08T23:08:00.090 回答
1

如果你没有public那里,它将相当于以下内容:

class ChildClass : private ParentClass

这是因为classsprivate默认具有访问权限。

此外,privateprotectedpublic调用访问说明符。这与继承的内容无关,而是您可以在派生类中访问的内容。

如果你想有默认public继承,使用 astruct代替:

struct ChildClass : ParentClass

以上等价于struct ChildClass : public ParentClass因为structspublic默认具有访问权限。

于 2012-09-08T23:11:39.240 回答
0

C++ 还允许受保护继承私有继承

类默认为私有。结构默认为公共。

于 2012-09-08T23:08:19.273 回答
0

您还可以拥有私有和受保护的继承。你在这里有什么

class ChildClass : ParentClass {

将导致私有继承。

于 2012-09-08T23:08:58.653 回答