目录
加号运算符重载 (operator+)
2、左移运算符重载(只能利用全局函数重载左移运算符)(person<<)
3、递增运算符重载(operator++)
4、赋值运算符重载(operator=)
5、关系运算符重载
6、函数调用运算符重载 operator()
概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。
作用:实现两个自定义数据类型相加的运算
运算符重载也可以发生函数重载:
总结:对于内置的数据类型的表达式的运算符是不可能改变的(比如两个int类型的数相加,已经内置了,就不能改变了);不要滥用运算符重载(用的person+,在函数里用的减号)。
2、左移运算符重载(只能利用全局函数重载左移运算符)(person<<)
cout是ostream(输出流)类型的;要在cout << p后加endl,就要更改上面运算符重载函数返回值;
注意:如果是私有属性,可以利用友元friend,在类中声明运算符重载函数,就可以了。
3、递增运算符重载(operator++)
作用:通过重载递增运算符,实现自己的整形数据
注意:前置递增返回的引用,后置递增返回的值
4、赋值运算符重载(operator=)
C++编译器至少给一个类添加4个函数:
<1>默认构造函数(无参,函数体为空)
<2>默认析构函数(无参,函数体为空)
<3>默认拷贝构造函数,对属性进行值拷贝
<4>赋值运算符operator=,对属性进行值拷贝
如果类中有属性指向堆区,做赋值操作时也会出现深浅拷贝的问题。
5、关系运算符重载
作用:重载关系运算符,可以让两个自定义类型对象进行对比操作
6、函数调用运算符重载 operator()
函数调用运算符()也可以重载
由于重载后使用的方式非常像函数的调用,因此称为仿函数
仿函数没有固定写法,非常灵活