我正在处理 C++ 中的继承问题。据我所知,如果您不指定,B 将始终从 A 继承 private。
那么为什么这段代码可以工作:
struct A {};
struct B : A {};
int main(void)
{
A b = B();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但这会产生“A 是 B 的不可访问的基点”错误:
struct A {};
struct B : private A {};
int main(void)
{
A b = B();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望它们是一样的?
来自cppreference:
默认情况下,用关键字定义的类对其成员及其基类
struct具有公共访问权限。
默认情况下,用关键字定义的类对其成员及其基类
class具有私有访问权限。
或者来自派生类文档
如果省略 access-specifier,则对于使用 class-key 声明的类,它默认为public
struct;对于使用 class-key 声明的类,它默认为privateclass。
上面的引用解释了程序的行为。