在C++的类中, 我们可以对操作符重载, 何为操作符重载, 顾名思义, 即重写操作符的方法. 如, 在编译器中, 我们可以对两个整型进行加减乘除的运算, 但如果对两个类的对象进行加减乘除, 则会报错, 通过操作符重载, 我们可以实现对类对象的加减乘除以及其他各种操作, 最典型的如输入输出.
如图为一个复数类.
在它的声明部分, 有一个带两个参的构造函数, 以及对加减乘除的操作符重载, 以及前置后置加加减减的重载, 以及两个流操作符也就是输入输出的重载.
如图中所示, 对于需要对象的操作符也就是二元操作符我们通常声明为友元函数, 一元操作符则通常声明为成员函数, 这是因为在成员函数中是隐含类的this指针的, 也就是说通过this指针可以对当前对象进行操作, 而一元操作符操作的对象则是当前对象, 二元操作符则不是对当前对象的一个操作, 所以对其重载时通常将其声明为友元, 友元函数是没有this指针的.
如图中, 对加加减减声明了两次, 其中一个带一个int型参数, 这是一个伪参数, 也就是说, 通过在其参数列表中加一个int型参数, 让编译器知道当前自增或自减操作符是一个后置的. 而不带参的, 则是前置自增自减.
如图中, 对于流操作符, 我们使其返回值为iostream对象的引用, 参数列表中也传入引用, 这是因为如果不使用引用传递, 那么我们在调用流操作符进行输入输出时并不会影响到当前的iostream对象, 也就是说会形成无效的操作.