【发布时间】:2019-07-16 21:55:36
【问题描述】:
假设我有以下代码:
class A
{
public:
void foo() const {}
};
class B : protected A
{
public:
void print() const
{
foo();
}
};
void main()
{
B b;
b.print();
b.foo();
}
现在,通过阅读Difference between private, public, and protected inheritance,我得出结论,在受保护继承的情况下,基类的每个公共成员(就此而言 - 类 A)都可以在派生类(类 B)中访问。
但是,我不明白为什么在这种情况下不允许使用命令b.foo();,因为根据受保护继承的规则,它显然是允许的。
【问题讨论】:
-
假装
B声明protected: void foo() const;可能会有所帮助。适用相同的访问限制。 -
访问规则规定
B可以访问foo,但在b.foo();中访问的不是B而是你 -
in 是关键字。 main 的范围不在那里,是吗?
标签: c++ inheritance protected