友元还可以是类,即一个类可以作另一个类的友元。当一个类作为另一个类的友元时,这就意味着这个类的所有成员函数都是另一个类的 友元函数。所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
关于友元的注意事项 : 右元关系不可以传递 友元声明的函数形式和数量不受限制 友元关系的单向性
友元只是封装的补充
#include<iostream>
using namespace std;
class Match;
class Time
{
friend Match;
public:
Time(int hour,int minute,int second)
{
m_iHour=hour;
m_iMinute=minute;
m_iSecond=second;
}
private:
void printTime()
{
cout<<"时:"<<m_iHour<<endl<<"分:"<<m_iMinute<<endl<<"秒:"<<m_iSecond<<endl;
}
int m_iHour;
int m_iMinute;
int m_iSecond;
};
class Match
{
public:
Match(int hour,int min,int sec):m_tTimer(hour,min,sec)
{
}
void testTime()
{
m_tTimer.printTime();
cout<<"时:"<<m_tTimer.m_iHour<<endl<<"分:"<<m_tTimer.m_iMinute<<endl<<"秒:"<<m_tTimer.m_iSecond<<endl;
}
private:
Time m_tTimer;
};
int main()
{
Match m(5,21,13);
m.testTime ();
system("pause");
return 0;
}
注:由于编译器不同,友元类有两种写法。1、friend class 类名; 2、friend 类名;