我是初学者的面向对象编程爱好者。我遇到了以下难题:
class A {
};
class B {
protected:
friend class A;
};
class C {
public:
friend class B;
};
引用上面的示例代码,假设上述类具有数据成员,那么在A成员的声明中可以使用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
类的 friend 。您无法在C
中访问A
的任何 protected 或私有(private)成员。关于c++ - 类(class)友元-一个难题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14378971/