我是初学者级别的面向对象编程爱好者。我遇到了以下难题:
class A {
};
class B {
protected:
friend class A;
};
class C {
public:
friend class B;
};
参考上面的示例代码,假设上面的类有数据成员,C的成员可以在A成员的声明中使用什么名称?
仅限私人会员
仅受保护的成员
所有C的数据成员
仅限公众成员
C的数据成员*
我的选择是回答4因为友谊不是传递性的。因此,A是B的朋友,但A不是C的朋友(即使B是C的朋友)。 这是正确的想法吗?
另外,我的问题是到目前为止(在教程中)我遇到了友情被宣布为这样的exmaples:
class X {
public:
friend class Y;
};
如果我们使用受保护的公共说明符而不是公共说明符,有什么区别?像那样:
class X {
protected:
friend class Y;
};
答案 0 :(得分:7)
friend
声明的访问说明符,它没有任何区别。只要班级A
本身未被宣布为班级C
的朋友。您无法访问C
中A
的任何受保护或私有成员。