友元类和访问器节的定义

Definition of friend class and accessor sections

本文关键字:定义 访问 友元      更新时间:2023-10-16

当将一个类定义为友类时,定义放在哪个访问器部分是否重要,如果重要,是否会改变友类可以访问的成员?

class aclass
{
private:
   // friend bclass;
public:
   // friend bclass;
protected:
   // friend bclass;
};
class bclass
{};

访问说明符不适用于友元函数/类
你可以在任何访问说明符下声明Friend函数或类,并且函数/类仍然可以访问所有成员变量(Public,Protected &

一旦您将好友类/函数放入给定类(例如'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;但在这种情况下不是一个类复制构造函数(如果它没有在任何地方定义)。

友元函数按照约定不放在任何访问器中,因为根据定义它们不是类的一部分。你可以这样做:

class Elephants
{
 //friend void notAMemberFuncion(argument 123);
public:
// member functions;
protected:
// data members;
};

友元类/函数可以访问类的所有private/protected/public成员,友元类/函数所放置的访问区没有任何影响。建议将friend类/函数放在public部分,因为friends是类接口的一部分。