我是java程序员,最近在学习C++。看到运算符重载这块的时候感到很不解,说是可以解决多态的问题,自定义运算。呐为什么不直接用多态函数实现这些功能,何必非得使用这些运算符来执行这些操作?
有用到的地方还是重载方便,比如对象对与象相加"+"
原运算符不能满足就自实现方式,面向对象调用起来是最方便的
//obj3 = obj1 + obj2;
有时候用操作符更加直观啊,也不用记函数名什么的。Java的目标是简化C++的复杂功能,所以把它去掉了。毕竟C/C++是元老啦,Java在它之后出的。
重载运算是为了方便使用,下面举例子
struct myPoint
{
public:
myPoint(){}
myPoint(int x, int y)
{
this->x = x;
this->y = y;
}
private:
int x; //x坐标
int y; //y坐标
myPoint operator +(const myPoint &other) const;
};
myPoint myPoint::operator +(const myPoint &other) const
{
myPoint pointTemp;
pointTemp.x = this->x + other.x;
pointTemp.y = this->y + other.y;
return pointTemp;
}
myPoint pt1(10, 10), pt2(3, 10), pt3;
pt3 = pt1 + pt2; //重载了+号可以直接相加