C++中以关键字 friend 声明友元关系。友元可以访问与其有 friend 关系的类中的私有成
员。友元包括友元函数和友元类。
1.友元函数
如果在本类以外的其它地方定义了一个函数(这个函数可以是不属于任何类的非成员函
数,也可以是其它类的成员函数),在类体中用 friend 对该函数进行声明,此函数就称为本
类的友元函数。一个类的友元函数可以访问这个类中的 private 成员。
1.1 将全局函数声明为友元函数
如果要将一个全局函数(call)声明为本类(Time)的友元函数,则只需要在本类的函数声
明部分声明该函数为 friend。此时,该函数可以访问本类的 private 成员。
class Time{
public:
Time(int=1,int=1,int=1);
friend void call(Time &);//声明友元函数
private:
int hour;
int min;
int sec;
};
Time::Time(int h,int m,int s){
hour=h;
min=m;
sec=s;
}
void call(Time &t) {//全局函数,且是 Time 类的友元函数
cout<<"Call:"<<t.hour<<"-"<<t.min<<"-"<<t.sec<<endl;//访问 private 成员
}
int main(){
Time t;
call(t);
system("PAUSE");
return EXIT_SUCCESS;
}