C++简单问题求帮助

什么是重载赋值运算符?能举个简单的例子说说吗?谢谢了

比如你写一个复数的类,复数有加减乘除的吧,但是没现成的复数类,所以加减乘除函数都得你自己写。
一般你会写:add() sub() mul() div()
每次调用都这样 objA.add(objB)
但是如果要做连续操作: a+b-c+d写起来就麻烦了
所以可以重载运算符
让a+b等价于a.add(b)
重载运算符的目的,就是建立这样的等价关系
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-08
class Point
{
public:
Point(float a=0,float b=0);
void setPoint(float a,float b);
float getX()const;
float getY()const;
friend ostream & operator <<(ostream &out,const Point &p);
friend istream & operator >>(istream &in,Point &p);
protected:
int x,y;
};
ostream & operator <<(ostream &out,const Point & p)
{
out <<'('<<p.x<<','<<p.y<<')';
return out;
}
istream & operator >>(istream &in,Point & p)//因为是二元运算符,必须两个参数
{
scanf("(%f,%f)",&p.x,&p.y);//友元函数,可以访问私有、保护、公有变量
return in;//必须return istream的对象,以为后面的输入输出准备...
}
赋值的话就这两个吧?难道还有等号重载的??这个是把Point类型的对象按照(a,b)的格式输入输出的,书上应该也有例子,意思应该很清楚吧....
第2个回答  2010-05-08
比如说,加号只能计算int型整数相加,不能计算复数

比如:

i=1+1;

你重载了运算符之后,自己写程序告诉电脑怎么计算复数(复数用(a,b)表示)(需要先建立复数的类型或类)

t=((a1+a2),(b1+b2))

比如复数S1,S2相加得到复数,下次就可以直接写

i=S1+S2;

得到的结果就是一个复数,用起来就跟正常加号“+”的一样了,只是重载运算符之后它能够计算不同类型而已。
第3个回答  2010-05-08
赋值运算符即 =
他跟拷贝构造函数很相似
class Point
{
public:
Point(float a=0,float b=0){}
Point(){}
Point(Point &pt)
{
x=pt.x;
y=pt.y;
}
Point operator=(Point &pt)
{
x=pt.x;
y=pt.y;
}
protected:
int x,y;
};
相似回答