- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
cppCH7运算符重载及流类库
cppCH7运算符重载及流类库 自考 7.0 本章主要内容 本章所有要点在考核要求中为“识记”层次 1、运算符重载 2、流类库 3、格式控制 4、文件流 7.1运算符重载 1、什么叫运算符重载? 同一个运算符,由于所操作的数据不同而具有不同的意义,这就是运算符重载。 举例理解:表达式9/2、9.0/2.0的计算结果不同。 2、运算符重载的实质就是函数重载。 理解运算符重载要从函数重载的方式去理解。 3、重载运算符+、-实现复数的加减(要求熟练掌握) 举例理解(p128-129) 重载运算符+实现复数的加 z=x+y应理解为z.operator=(operator+(x,y)) 7.2类运算符和友元运算符1 为了能够访问类的私有成员,用户自定义的重载运算符采用的方法: (1)重载为成员函数,(2)重载为友元函数。 举例理解p130-131 题目:复数类重载+、-运算符。(历年来各种C++考试反复采用,一定要熟练掌握) 2006.10(30) 7.2类运算符和友元运算符2 运算符重载为成员函数,和友元函数在使用上的区别: (1)运算符重载为成员函数要吸收一个操作数作为对象调用该重载函数,故对于双目运算符来说,重载为成员函数只需要1个参数。 (2)运算符重载为友元函数不存在吸收操作数作为对象调用,故对于双目运算符来说,重载为友元函数时也需要2个参数。 (3)正是由于以上两点,在使用重载后的运算符时,要避免被编译器错误解释。(p132) 分析这种使用Complex x,y,z;z=x+27;z=7+y;运算符+重载为哪一种更为合理,为什么? 7.3 ++和--运算符的重载 先来记住两个规定: (1)有4个运算符不能重载:. :: .* ?: sizeof 有4个运算符只能重载为成员函数:= () [ ] - (2)运算符重载的3个不改变:优先级不改变、结合性不改变、所需操作数个数不改变。 区别++,--的前置和后置(p133): 重载为友元函数 前置:一个参数 后置:两个参数(第二个参数规定为整型) 重载为成员函数 前置:没有参数(被吸收为对象调用了) 后置:一个参数(这个参数规定为整型) 举例理解p133-135 (2006.1(18)填空、2007.10(29)程序分析) 7.4 流类库 在C++中,输入输出是通过里流来完成的。 C++预定义了4个流对象:cin、cout、cerr、clog,它们被定义在iostream.h头文件中。 cin视为istream的对象,表示标准输入设备—键盘 cout视为ostream的对象,表示标准输出设备—显示器 VC6.0 istream_withassign cin; ostream_withassign cout; ostream_withassign cerr; ostream_withassign clog; 7.5运算符和的重载 举例理解p137 理解3点: 1、这是运算符,的重载 2、运算符,是重载为友元函数 3、为了实现连续输出或输入,该重载函数的返回值类型为引用(输出为ostream类的引用而输入为istream类的引用) 运算符和的重载 7.6格式控制1 举例理解(p139-141)—要求熟悉这几个例子(2006.1(33)2007.1(27)结合重载考察) 使用成员函数和格式控制符来实现格式控制 7.6格式控制2 7.7磁盘文件的I/O 包含fstream.h头文件后可以使用3个文件流类: ifstream、ofstream、fstream。 磁盘文件的I/O举例(p142) 7.8流的错误处理 检查流对象当前状态的函数: p144了解 清除/设置流的状态位: cin.clear(); //p144了解 习题6 * #includeiostream.h class complex{ private: int real,imag; public: complex(int r=0,int i=0){real=r;imag=i;} friend complex operator+(complex a,complex b); int getreal(){return real;} int getimag(){return imag;} }; complex operator+(complex a,complex b) {return complex(a.real+b.real,a.imag+b.imag);} void main(){ complex x(2,3),y(4,5),z; z=x+y; coutz.getreal(),z.getimag()endl; } #includeiostream.h class complex{ priva
文档评论(0)