友元(friend)
一个类A可以决定哪些(1)函数(2)成员函数(3)类 是它的友元。作为友元,可以直接访问类A的私有成员。
基本语法:
friend [函数或者类];
例:
class A
{
friend class B; // 类A选择B作为它的友元类
friend void f(int a); // 类A选择全局函数 void f(int a) 为它的友元类
friend void B::g(int b); // 类A选择B的成员函数 int g(int b) 为它的友元类
};
定义顺序问题
- 被选为友元的类或函数必须在其朋友之前定义清楚(完整定义)。如果被选为友元的类用到了其朋友,则应采用预先定义方法定义其朋友。如:
class A;
class B { };
class A { friend B; };
- 如果被选为友元的类用到其朋友的成员变量或函数,则应采用实现与定义分离的方法定义该类,同时,实现要在其朋友类的定义之后。