重载------重新赋予新的含义
函数重载,即赋予函数新的含义来实现新的功能
重载作用就是要一名多用
对C++运算符进行重载,用基本运算符操作自定义对象
对重载更通俗的理解
大家其实已经对运算符的重载进行使用了,如用某一运算符对两个数进行运算
计算机处理整数、单精度和双精度的运算操作是完全不同的,但是计算机已经对这一运算符进行重载了
所以同一运算符就能对不同类型的数据进行运算了
运算符重载
把运算符重载用于类的定义
为新的数据类型定义出有实用意义而且方便实用的操作
重载的好处
扩大运算符的作用,是运算符能用于类的对象
能是程序易于编写,阅读和维护
运算符重载后原有的功能仍然保留,没有丧失或更改
重载的方法
定义一个重载运算符的函数
在需要执行重载运算符时,系统会自动调用该重载的运算符函数
重载运算符函数的一般格式:
函数类型 operator 运算符名称(形参列表)//operator是关键字,专门用于定义重载运算符
{对运算符的重载处理}//运算符名称就是C++给用户的预定义名称
调用头文件stream的作用
运算符重载的规则
只能对已有的运算符进行重载,不能自定义运算符,而且有五个运算符是不能重载的。
成员访问运算符、成员指针访问运算符、域运算符、长度运算符、条件运算符
重载使用的局限性
- 不能改变运算符运算对象
- 不能改变运算符优先级
- 不能改变运算符的结合性(运算顺序)
- 不能有默认的参数
- 重载运算符的参数不能全是标准数据类型,以防止用户篡改用于标准类型数据的运算性质,避免混乱
- 用于类对象的运算符一般必须重载,例外:运算符“=”和“&”可以不用重载。但是含有动态分配内存的指针的类重载运算符“=”时需要自己定义(深拷贝???什么鬼)
- 应当使用重载运算符的功能类似于运算符作用于标准类型数据时所实现的功能。(就是说不要让重载的运算符功能显得与其直观意义相差太多)