第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;
};