将类定义为朋友类时,定义放置在哪个访问器部分是否重要,如果是这样,是否会更改朋友有权访问的成员?
class aclass
{
private:
// friend bclass;
public:
// friend bclass;
protected:
// friend bclass;
};
class bclass
{};
将类定义为朋友类时,定义放置在哪个访问器部分是否重要,如果是这样,是否会更改朋友有权访问的成员?
class aclass
{
private:
// friend bclass;
public:
// friend bclass;
protected:
// friend bclass;
};
class bclass
{};
访问说明符不适用于友元函数/类
您可以在任何访问说明符下声明友元函数或类,并且函数/类仍然可以访问该类的所有成员变量(公共、受保护和私有)。
一旦你将朋友类/函数放在给定类(比如'aclass')中的任何地方。它将可以访问该类的所有已定义成员(无论是公共/私有/受保护的);例如:
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 复制构造函数(如果它没有在任何地方定义)。
按照惯例,友元函数不会放在任何访问器中,因为根据定义,它们不是类的一部分。你可能会做这样的事情:
class Elephants
{
//friend void notAMemberFuncion(argument 123);
public:
// member functions;
protected:
// data members;
};
朋友类/函数可以访问类的所有私有/受保护/公共成员,朋友类/函数放置在哪个访问部分没有任何区别。建议将朋友类/函数放在公共部分,因为朋友是类接口的一部分。