朋友类和访问者部分的定义

时间:2011-04-07 03:26:18

标签: c++ accessor friend-class

将一个类定义为友元类时,定义所在的访问者部分是否重要,如果是,那么更改朋友可以访问的成员是什么?

class aclass
{
private:
   // friend bclass;

public:
   // friend bclass;

protected:
   // friend bclass;
};

class bclass
{};

4 个答案:

答案 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)

友元类/函数可以访问类的所有私有/受保护/公共成员,其中放置友元类/函数的访问部分没有任何区别。 建议将朋友类/功能放在公共部分,因为朋友是类接口的一部分。