C++运算符重载:
<span style="font-size:18px;">
#include <iostream>
using namespace std;
class point{
private:
int x;
int y;
public:
point(int x, int y){
this -> x = x;
this -> y = y;
}
int getX(){
return this -> x = x;
}
int getY(){
return this -> y = y;
}
void add(point p){
add(p.getX(), p.getY());
}//重载add函数。
void add(int x, int y){
this -> x += x;
this -> y += y;
}
};
int main()
{
return 0;
}
</span>
这里为什么要重载add函数呢,因为,每次使用这个add方法呢,看起来有点麻烦。
比如说,
<span style="font-size:18px;">
point p(5, 5);
p.add(point(5, 5));</span>
这里,每次用到add函数,而有时我们用到的东西可能比较长,这样看起来比较麻烦。
当我们这样写时,
<span style="font-size:18px;">
p += point(15, 15);</span>
这样就会变得很简单了,但是,这样写是肯定会出错的,因为p+不到point的。。传不进去。
这时,我们就需要重载我们的+=运算符了。。
<span style="font-size:18px;">
void operator += (point p){
add(p);
}</span>
这时,一个对象能够和另一个对象想加了!!!
而当我们的对象是指针时,我们同样也可以这么写。。
<span style="font-size:18px;">
#include <iostream>
using namespace std;
class point{
private:
int x;
int y;
public:
point(int x, int y){
this -> x = x;
this -> y = y;
}
int getX(){
return this -> x = x;
}
int getY(){
return this -> y = y;
}
void add(point p){
add(p.getX(), p.getY());
}//重载add函数。
void add(int x, int y){
this -> x += x;
this -> y += y;
}
void operator += (point p){
add(p);
}//重载运算符。
};
int main()
{
//point p(5, 5);
//p.add(point(5, 5));
//p += point(15, 15);
//cout << p.getX() << endl;
//cout << p.getY() << endl;
point *p = new point(5, 5);
(*p) += point(15, 15);
cout << p -> getX() << endl;
cout << p -> getY() << endl;
return 0;
}
</span>