运算符重载函数原型:
返回类型 operator运算符(目数参数列表)
运算符重载函数可以是全局函数,也可以是类中的成员函数,如果是类的成员函数,隐式申明了重载的运算符从左起的第一个类型指该类。有些时候不得不用全局函数重载运算符,比如有一个类要重载+号运算符,+是个二目运算符,有左右两个操作对象,如果一个类想重载与整型相加,类+整型这种形式可以用成员函数完成,但整型+类这种形式就必须用全局函数去重载了,因为成员函数有隐含条件。全局重载运算符函数的参数列表是完整的,有几个目数就写上几个类型参数。全局重载函数的参数列表中至少含有一个自定义类型(类),也就是说是不能重载原有基本类型(间)的运算符操作。另外C++规定“=”、“->”、“[]”、“()”运算符只能使用成员函数重载。
有两个特别的运算符++、--,它们既可是前置也可以是后置的,参数列表只有类对象自身(成员函数列表为空)表示后置++,列表末尾多加一个整型参数表示前置++。一般重载操作符都不改变原先的语义,对前置++对象操作结束后应用返回自身的引用,而后置++则是对象操作结束后返回一个操作前的拷贝常量对象。
友元分友元函数、友元成员函数、友元类。如果在一个类中声明了一个友元函数,那么在这函数中可以像类内一样自由访问类对象的任何成员。友元成员函数指声明其他类的成员函数为友元,同理声明一个友元类,那么在友元类中都能随意访问该类对象成员。显而易见使用友元的缺点,破坏了类原本所具有的封装性。一般除了声明运算符全局函数为友元函数,其他情况比较少用。