欢迎来到天天文库
浏览记录
ID:14308737
大小:1.89 MB
页数:12页
时间:2018-07-27
《第14课 运算符重载》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第14课运算符重载一、运算符重载的概念 1、概念 一符多用。通过重载,对运算符赋予新的含义。 如“+”号,通过重载(C++系统完成),既可以进行整数运算,也可以进行浮点数运算。 2、实例:复数的加法(14_001.cpp) 3、上例:对“+”运算符进行重载(14_002.cpp) -------------------------------------------------------------------------------二、运算符重载的规则 1、不允许自己定义新的运算符 2、不能重载的运算符
2、 (1). (成员访问运算符) (2)* (成员指针访问运算符) (3):: (域运算符) (4)sizeof (长度运算符) (5)?: (条件运算符) 3、不能改变运算对象的个数 4、不能改变运算符的运算级别 5、不能改变结合性 6、重载运算符的函数不能有默认的参数 7、至少有一个参数是自定义的类对象(不能全是C++的标准类型) 8、用于类对象的运算符必须重载,有两个例外:“=”“&” 9、重载功能应该类似于标准的功能--------
3、-----------------------------------------------------------------------三、运算符重载函数作为友元函数 实例:复数相加(14_003.cpp) 说明: 1、在VC++6.0中运行此程序,应修改头两行,见程序。 2、由于友元函数会破坏类的封装性,所以应尽量避免使用。四、重载双目运算符(有两个操作数,如“+”) 1、实例:重载字符串比较运算符“==”、“>”、“<”、“!=” 说明:C++的字符串类型,就是对以上的运算符进行了重载,方便了字符串的比较 2、程序(1
4、4_004.cpp):以“==”运算符重载为例 注意:如果将重载函数定义为友元函数,则程序开头两句应改为: #include 3、重载“+”运算符,对类对象进行相加运算(14_exam.cpp) 4、重载“<”运算符,对类对象进行比较(14_011.cpp) 5、重载“<”运算符,判断点在不在背景空白处(14_012.cpp) -------------------------------------------------------------------------------五、重
5、载单目运算符 1、实例:重载运算符“++”(14_005.cpp) 说明:第二个重载函数,多了一个“int”参数,无实际意义,只是与第一个函数区别开来。-------------------------------------------------------------------------------六、重载“<<”运算符 1、重载的格式: ostream&operator<<(ostream&,自定义类&); istream&operator>>(istream&,自定义类&); 2、重载“<<”的友元实例(14_006.cpp
6、) 说明: 重载“<<”的函数定义成友元函数的形式,程序开头两句要改为: #include 3、重载“<<”的普通函数(14_007.cpp) 说明:这种方式,只能将“minute”和“sec”设置成公有成员,破坏了封装性, 总结上面的两种方式,都不是完善的重载方法,“<<”的重载存在着问题。 4、完整的程序,重载“<<”和“>>”的普通函数(14_008.cpp)注意:C++规定,重载“<<”和“>>”的函数不能做为类的成员函数。-----------------
7、--------------------------------------------------------------七、不同类型数据间的转换 1、隐式类型转换 inti=6; i=3.5+i; //先把“i”转换成“double”,计算得9.5,然后再转换为“int”,9 2、显式类型转换 i=int(7.5); //C++写法 3、类的转换构造函数 (1)用途:将其它类型的数据转换成类的对象 cp(doubler){real=r;imag=0;}
此文档下载收益归作者所有