class A{...}
class B{...}
class C : public A, B {...}
Run Code Online (Sandbox Code Playgroud)
A和B现在都是公共继承的吗?或者我是否必须为每个类编写显式访问修饰符?
基类列表的语法基本上是[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).