C++多继承访问修饰符

Spi*_*ide 2 c++ inheritance

class A{...}
class B{...}
class C : public A, B {...}
Run Code Online (Sandbox Code Playgroud)

A和B现在都是公共继承的吗?或者我是否必须为每个类编写显式访问修饰符?

Mic*_*zel 5

基类列表的语法基本上是[class.derived]§1中的完整语法规范):

[private|protected|public] [virtual] <base-class-name>, ...
Run Code Online (Sandbox Code Playgroud)

因此访问说明符是每个基本说明符的一部分.

class C : public A, B {...}
Run Code Online (Sandbox Code Playgroud)

这里,只有A一个显式访问说明符public,另一个B没有给出显式访问说明符,这意味着将使用默认值.由于B使用class-key 声明,因此class它的默认基本访问说明符将是private(参见[class.access.base]§2).