运算符重载本质上就是函数重载。这里举例子是定义三维数组。下面代码是进行简单的定义,输出分别是000和123。
- #include
- 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类型的相减。