前面博客讲到运算符重载,可是在重载时会出现一些问题,比如"+"重载后无法实现 int + 对象私有变量的情况,只能实现 对象私有变量 + int 的情况,这里呢就提出关于友元函数函数的部分内容。
1.友元函数的声明
同运算符重载相同
class Yunsuan
{ public:
friend Yunsuan & operator+(int, Yunsuan &);
}
2.友元函数的定义
#include "Yunsuan.h"
Yunsuan & Yunsuan::operator+(int value,Yunsuan & other)
{ Yunsuan result(value + other.m_value);
return result;
}
3.友元函数的实现
void Testfriend();
int main()
{
}
void Testfriend()
{ Yunsuan int1(1024);
Yunsuan int2;
int2 = 2048 + int1;
cout <<"int2中m_value的值为:" << int2.GetValue << endl;
//结果应改为3072;
注意
一般不使用友元函数,但输入输出流必须是友元函数!!!!