C++运算符重载,有比较多的妙用,例如,默认的“+”号,承担着整型数字的相加、浮点型数字的相加、字符串的连接,等等,但不能实现对象中的数据成员的相加。因此我们通过重载,可以实现一些特殊的效果。
我们定义一个类,类里有3个数据成员,分别为一个字符型、一个整型、一个浮点型,我们重载运算符+号,使得两个对象可以相加,具体效果为字符串连接、整型数字取和、浮点型数字取平均值,具体代码如下:
#include<iostream>
using namespace std;
class test {
public:
string name;
int age;
double score;
test (string name, int age, double score): name(name), age(age), score(score) {}
test operator + (test &A) {
return test(name + A.name, age + A.age, (score + A.score) / 2);
}
void display() {
cout << "姓名:" << name << "\t年龄:" << age << "\t成绩:" << score << endl;
}
};
int main() {
test a("小明", 16, 85);
a.display();
test b("张三", 20, 60);
b.display();
test c = a + b;
c.display();
test d = c.operator + (a);
d.display();
}
运行结果如下图所示。
需要注意的是a.operator + (b)与a+b效果是一样的。