C++提供了运算符重载的功能,今天我们从最简单的运算符 + 来介绍运算符重载的相关概念。
operator 关键词声明一个函数要重载什么操作符。
语法如下:
type operator operator-symbol ( parameter-list )
比如:
A operator +(A a){ }
声明操作符+, 参数是A的一个对象,返回值也是一个A的对象。
int operator +(int a){ }
声明操作符+, 参数是一个int,返回值也是一个int。
以下是代码:
#include <iostream>
#include <assert.h>
using namespace std;
class A {
public:
A(int i) :
num(i) {
}
A operator +(A a) {
cout << "+: " << endl;
return A(num + a.getNum());
}
int operator +(int i) {
cout << "+: " << endl;
return num + i;
}
int getNum() {
return num;
}
void run() {
cout << "a is runing:" << num << endl;
}
private:
int num { 10 };
};
int main() {
A a(10);
A b(20);
A c = a + b;
assert(c + 10 == 40);
assert(c.getNum() == a.getNum() + b.getNum());
c.run();
return 0;
}