那么,该如何重载一个运算符呢? 其实和普通函数类似,只是函数的名字由关键字operator及相关的运算符号组成而已。如重载加法运算符是这样的:
const A
operator+(const A &v1,
const A &v2);
可以把运算符重载为友元的(也就是非成员函数)和成员函数,二者的区别在运算符是一元的(一个参数)还是二元的(两个参数)。对非成员函数来说,一元就是一个参数,二元是两个;而对于成员函数来说,一元意味着没有参数,二元只有一个参数,举个例子会比较容易理解:
非成员函数版本的“加法”
friend const A
operator+(const A &v1,
const A &v2);
成员函数版本的“加法“
const A
operator+(const A &v) const;
const A opertor+(const A &v) const;
A & opertor-=(const A &v);
const A & opertor++(A & a); // Prefix
const A opertor++(A & a, int); // Post
细心的你已经发现了,为什么有些地方要用const而有些不用,为什么有时候返回一个对象而有时候要返回引用? 别心急,下面会介绍的。