运算符重载本质上就是函数重载。这里举例子是定义三维数组。下面代码是进行简单的定义,输出分别是000和123。
#include<iostream>
using namespace std;
class Vec3 {
public:Vec3() :r(0), g(0), b(0){}Vec3(int _r, int _g, int _b):r(_r),g(_g),b(_b){}
public :int r, g, b;int temp[3];
};
int main()
{Vec3 t1;cout << t1.r << t1.g << t1.b << endl;Vec3 t2(1, 2, 3);cout << t2.r << t2.g << t2.b << endl;
}
现在问题来了,如果要想两个vec3变量进行加减乘除运算,则需要对运算符进行重载,vec3相当于自定义类型。
Vec3 operator-(const Vec3& V) const { return Vec3(r - V.r, g - V.g, b - V.b); }
上述代码就是对运算符进行重载,最终可以实现直觉上的两个Vec3类型的相减。