作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是初学者级别的面向对象编程爱好者。我遇到了以下难题:
class A {
};
class B {
protected:
friend class A;
};
class C {
public:
friend class B;
};
引用上面的示例代码,假设上面的类都有数据成员,那么在A的成员声明中可以使用C的哪些成员名称?
仅限私有(private)成员(member)
仅限 protected 成员
C的所有数据成员
仅限公共(public)成员(member)
不是 C 的数据成员*
我的选择是答案 4,因为友元是不可传递的。因此,A 是 B 的 friend ,但 A 不是 C 的 friend (即使 B 是 C 的 friend )。这是正确的想法吗?
另外,我的问题是到目前为止(在教程中)我遇到过这样声明友元的示例:
class X {
public:
friend class Y;
};
如果我们使用 protected 说明符而不是公共(public)说明符,有什么区别?像那样:
class X {
protected:
friend class Y;
};
最佳答案
friend
声明中放置什么访问说明符没有任何区别。只要类 A
本身没有被声明为类 C
的友元。您不能访问 A
中 C
的任何 protected 或私有(private)成员。
关于c++ - 类(class)友元——一个谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14378971/
我是一名优秀的程序员,十分优秀!