- 4
- 0
- 约1.74千字
- 约 10页
- 2018-09-05 发布于江苏
- 举报
第七章运算符重载和流类库
运算符重载:type operator @ (参数表){ …//(函数定义) } 重载运算符时至少有一个自定义类型的数据作为操作数 成员运算符函数定义的语法形式: class X{ … type operator @ (参数表);…}; 参数作为运算符的右操作数。 当前对象作为运算符的左操作数,通过this指针隐含地传递给函数 友元运算符函数定义的语法形式: friend type operator @(参数表); 对于双目运算符,将它重载为一个友元运算符函数比重载为成员运算符函数便于使用。 若运算符的操作要修改类对象的状态,则选成员运算符函数较好 第七章运算符重载及流类库 :重载格式为 ostream operator(ostream stream,CLASSA a) { … return stream; } :重载格式为 istream operator(istream in,user_type obj) { … return in; } 勘误表 P130倒数第六行 friend去掉 P132倒数第10行 不能重载的有:. :: .* ?: P134第三行 number n(10); P135第一行 number n(10); P137例7.5第10行 friend ostream operator(ostreams,complex c); P137最后一行 istream operator(istream s,CLASSA a) P138 常量名:right 成员函数:long flags(long flags) 例题分析 语句ofstream f(“salary.dat”,ios::app|ios::binary);的功能是建立流对象f,试图打开文件salary.dat并与之连接,并且 A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 B.若文件存在,将其置为空文件;若文件不存在,打开失败 C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件 D.若文件存在,打开失败;若文件不存在,建立一个新文件 * * * * * 第七章运算符重载及流类库 流类库 iostream.h:标准I/O流头文件,在该文件中对各个流类定义了各自的全局对象。 cin:标准输入流 cout:标准输出流 cerr和clog:标准错误输出流。cerr没有被缓冲,因而发送给它的任何内容都立即输出;相反clog被缓冲了,只有当缓冲区满时才输出 第七章运算符重载及流类库 格式控制 成员函数和枚举常量名,注意通过cout.成员函数名来调用 内部格式控制操作函数 文件操作方式: 定义对象 文件的读写文本文件 文件的读写二进制 第七章运算符重载及流类库 如果表达式++i*k中的“++”和“*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为: A.operator*(i.operator++(),k) B. operator*(operator++(i),k) C.i.operator++().operator*(k) D. k.operator*(operator++(i)) B 例题分析 下面是类fraction(分数)的定义,其中重载的运算符以分数形式输出结果,例如将三分之二输出为2/3。在横线处填上适当字句。 class fraction{ int den,num; friend ostream operator(ostream,fraction); … }; ostream operator(ostream os,fraction fr){ ; return ; } osfr.den“/”fr.num os
原创力文档

文档评论(0)