友元的概念和定义
遵循一定规则而使对象以外的软件系统能够不经过消息传递方式直接使用访问对象内封装数据成员的技术方法便是友元,友元是面向对象系统与面向过程系统衔接的纽带。只要对外界的某个对象说明为一个类的友元,那么这个外界对象就可以访问这个类对象中的私有成员。
友元函数
友元函数是一种说明在类定义体内的非成员函数,说明友元函数的方法如下:
friend<返回值类型><函数名>(<参数表>);
说明:
(1)友元函数是在类中说明的函数,它不是该类的成员函数,但允许访问该类所有成员,它是独立于任何类的一般外界函数。友元不在类的范围内,它们不用成员选择符(.或->)调用.
(2)由于友元函数不是类的成员,所以没有this指针,访问该类的对象成员时,必须使用对象名,而不能使用类的成员名。
(3)虽然友元函数是在类中说明的,但其名字的作用域在类外,作用域开始点在说明点,结束点和类名相同。
(4)如果在说明友元时给出了该函数的函数体代码,则它是内联的。
(5)在类外定义友元函数时去掉friend关键字。
友元成员
另一个类的成员函数可以作为某个类的友元,只是在声明友元函数时加上成员函数所在的类名,称为友元成员。声明如下:
friend 函数返回值类型 类名::成员函数名(形参列表);