【发布时间】:2012-12-31 23:39:20
【问题描述】:
我是一个初级的面向对象编程爱好者。我遇到了以下难题:
class A {
};
class B {
protected:
friend class A;
};
class C {
public:
friend class B;
};
参考上面的示例代码,假设上面的类都有数据成员,那么在声明A的成员时可以使用C的哪些成员名称?
仅限私人成员
仅限受保护的成员
C 的所有数据成员
仅限公共成员
没有 C 的数据成员*
我的选择是答案 4,因为友谊不是传递的。因此,A 是 B 的朋友,但 A 不是 C 的朋友(即使 B 是 C 的朋友)。 这是正确的想法吗?
另外,我的问题是到目前为止(在教程中)我遇到了这样声明友谊的示例:
class X {
public:
friend class Y;
};
如果我们使用受保护的说明符而不是公共说明符,有什么区别?像这样:
class X {
protected:
friend class Y;
};
【问题讨论】:
-
+1 表示一个很好的问题。
标签: c++ class inheritance friend access-control