问题及代码:
#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); //实现Sample对象的加法运算
}
int main()
{
Sample obj1(10); //新建一个Sample对象,初始化为10
Sample obj2(20); //新建一个Sample对象,初始化为20
Sample obj3;
obj3=obj1+obj2; //对象的加法
obj3.disp();
return 0;
}
运行结果:
知识点总结:
因为运算符的重载,需要调用对象中的数据成员,所以,将运算符重载函数设置为友元函数。