/*copyright(c)2016.烟台大学计算机学院
* All rights reserved,
* 文件名称:text.Cpp
* 作者:舒文超
* 完成日期:2016年5月11日
* 版本号:vc++6.0
*
* 问题描述:阅读程序写出程序运行的结果
*/
#include<iostream>
using namespace std;
class Sample
{
private:
int x;
public:
Sample(){}
Sample(int a){x=a;}
void disp(){cout<<"x="<<x<<endl;}
friend Sample operator+(Sample &s1,Sample &s2);
};
Sample operator+(Sample &s1,Sample &s2)
{
return Sample(s1.x+s2.x);
}
int main()
{
Sample obj1(10);
Sample obj2(20);
Sample obj3;
obj3=obj1+obj2;
obj3.disp();
return 0;
}
运行结果:
x=30 :(s1.x=10 s2.x=20 ==> return 30)
PS:为什么将 “Sample operator+(Sample &s1,Sample &s2);” 定义为友元函数
因为方便取出其中的私有成员,如果将x定义为公有也可不用友元:或者加一
个公有函数来间接访问私有也可不用友元。