小弟又来问了。。这次是关于操作符重载的问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 06:18:57
class CVector {
public:
int x,y;
CVector () {};
CVector (int,int);
CVector operator + (CVector);
};

CVector::CVector (int a, int b) {
x = a;
y = b;
}

CVector CVector::operator+ (CVector param) {
CVector temp;
temp.x = x + param.x;
temp.y = y + param.y;
return (temp);
}
这里temp和param在这个函数里起的作用是什么

param就是加号的右操作数
temp是临时变量
你也可以写成
CVector CVector::operator+ (CVector param) {

return (CVector(x + param.x,y + param.y));
}
这样就返回了个无名对象

CVector CVector::operator+ (CVector param)//定义类对象的作为函数实参
{ //此重载函数的返回值为类对象
CVector temp;
//temp作为要返回的CVector类的对象,是进行完加法运算后要返回主函数内容
temp.x = x + param.x;
temp.y = y + param.y;
return (temp); //返回类对象
}
void main()
{
CVector a(3,4),b(5,6),c;
c=a+b;
//函数重载的使用就相当于函数的调用过程a.operator+(b);是类对象作为参数进行传递形参
c.display();
}