将一个类定义为友元类时,定义所在的访问者部分是否重要,如果是,那么更改朋友可以访问的成员是什么?
class aclass
{
private:
// friend bclass;
public:
// friend bclass;
protected:
// friend bclass;
};
class bclass
{};
答案 0 :(得分:3)
访问说明符不适用于友元函数/类
您可以在任何Access说明符下声明 朋友 功能或类,并且函数/类仍然可以访问该组件的所有成员变量(公共,受保护和私有)类。
答案 1 :(得分:2)
将朋友类/功能放在给定的课程中(比如'aclass')任何地方。它可以访问该类的所有已定义成员(无论是public / private / protected);例如:
class aClass
{
public: int pub; void fun1() {}
protected: int pro; void fun2() {}
private: int pri; aClass(const aClass& o);
friend void outsider ();
};
朋友功能outsider()可以访问pub,pro,pri,fun1,fun2;但在这种情况下不是aClass复制构造函数(如果它没有在任何地方定义)。
答案 2 :(得分:1)
根据约定,友元函数不会放在任何访问器中,因为根据定义,它们不是类的一部分。你可能会这样做:
class Elephants
{
//friend void notAMemberFuncion(argument 123);
public:
// member functions;
protected:
// data members;
};
答案 3 :(得分:1)
友元类/函数可以访问类的所有私有/受保护/公共成员,其中放置友元类/函数的访问部分没有任何区别。 建议将朋友类/功能放在公共部分,因为朋友是类接口的一部分。