C++中对封装的语法支持——重载运算符
重载运算符
1、对于自定义类型,编译器不知道运算规则,而重载运算符会将两个对象相加转换为函数调用。
2、运算符重载转换的函数调用,函数名字是固定的规则。
(1) 如果重载+号运算符,函数名字就是:operator+
(2) 如果重载-号运算符,函数名字就是:operator-
(3) 如果重载<号运算符,函数名字就是:operator<
(4) 如果重载!号运算符,函数名字就是:operator!
3、运算符重载就是在类的内部增加某个运算符函数。
4、对于+号运算符可以返回任何类型的数据(基本数据类型,自定义数据类型)。
5、返回值可以有两个选择:值、引用。
6、返回值要考虑运算符本身的含义是什么(尽量不要违背运算符本身的含义)。
代码实现:
声明一个Box类和Desk类:
实现Box+Box
实现Box+Desk
实现Box+int(自己制定规则)
实现Box+=Box
实现Box+=int类型
实现Box==Box(返回值类型为bool)
实现Box==int类型
实现++Box
实现Box++
运算符重载也可以重载类型转换运算符(规则由自己制定)
实现Box转换为int类型、bool类型、以及Box转换为Desk类型