/*运算符的重载:赋予运算符新的操作功能,主要用于类对象的操作
其定义形式为:
<函数返回类型 ><类名> :: operator <想要重载的操作符> (<参数表>) {
函数体
}
(可以把“operator <想要重载的操作符>”看成一个函数名,更好理解)
*/
#include<iostream>
using namespace std;
class Majinnbuu {
int a, b;
public:
Majinnbuu(int x=0, int y=0): a(x), b(y) {} //构造函数,这里x,y要赋上初值,否则后面会报错:类Majinnbuu不存在默认构造函数。很奇怪?
//重载+号,下面为声明,返回值为Majinnbuu对象
Majinnbuu operator + (Majinnbuu& another1) {//加&号,是个对象的引用。+左边是一个类对象,加号右边的部分(即(Renew)),表示加号右边也是一个Renew类对象的引用
Majinnbuu result; //定义了一个类对象作为返回值
result.a = this->a + another1.a;
result.b = this->b + another1.b;
return result;
}
//重载==号,返回布尔类型的值
//加不加&的原因,仔细想想
bool operator ==(Majinnbuu another2) { //不加&号。
if (a == another2.a && b == another2.b)
return true;
else
return false;
}
int mult() {
return a * b;
}
};
int main(){
Majinnbuu c1(1,2);
cout << c1.mult() << endl; //2
Majinnbuu c2(3,4);
cout << c2.mult() << endl; //12
if (c1 == c2)
cout << "相等" << endl;
else
cout << "不相等" << endl;
Majinnbuu c3 = c1 + c2; //其他写法可能报错
cout << c3.mult() << endl; //24
return 0;
}
11-07
11-07