通过好友访问受保护的成员
Access protected member through friend
假设类B继承了类A,而B继承了friend
的C。类A有一个受保护的成员foo
。
C类是否可以访问foo
?C++标准修订版之间有什么不同吗?
示例:
class A {
protected:
void foo() {}
};
class B : public A {
friend class C;
};
class C {
void func() {
B b;
b.foo();
}
};
C
可以访问B::foo
。朋友可以访问你可以访问的任何内容。由于B
可以访问foo
,C
也可以访问B::foo
。然而,friend
无法接触到朋友的朋友。
不,据我所知,编译器之间在这个问题上没有区别。
相关文章:
- C++:无法访问声明的受保护成员
- 继承和友元函数,从基类访问受保护的成员
- 为什么派生类的好友不能使用受保护的成员?
- 相同的层次结构,访问基类的受保护成员时的行为不同
- 从模板化父类中的派生内部类访问受保护的成员变量
- 在使用受保护和继承时无法访问在类中声明的私有成员
- 同一模板类但模板类型的受保护成员
- 派生类无法访问基类的受保护成员
- 继承期间受保护成员的皮条
- 访问说明符(私有/公共/受保护)如何在内部工作(限制成员访问)?
- 如何将超类的受保护成员访问到其派生类. 如果已在派生类中声明了具有相同名称的函数?
- 是否可以基于私有/受保护成员分配类枚举?
- 依赖模板基础的受保护成员
- 将派生类构造函数参数传递给受保护的成员
- 无法从派生类型的作用域访问另一个实例的受保护成员
- 为什么我无法使用受保护/私有继承访问派生实例中基类的受保护成员?
- 将对象强制转换为派生类以访问父类的受保护成员
- 使从一个基类派生的类能够使用继承的受保护成员
- 无法访问派生类函数内的基类的受保护数据成员
- 派生类如何使用基类的受保护成员