- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++的流提取运算符””和流插入运算符”“能用来输入输出标准类型的数据,这两个运算符是C++编译器在类库中提供的。 如果我们想用它们输入和输出自己声明的类型数据 对 “ ”和“”重载的函数形式如下: ostream operator (ostream ,自定义类 ); istream operator (istream ,自定义类 ); 对于用户自己声明的类对象系统该怎样进行转换呢? * * * * 重载流插入运算符 重载流提取运算符 不同类型数据间的转换 重载这两个运算符 重载运算符“”的函数的第一个参数和函数的类型都必须是istream 类型,第二个参数是要进行输入操作的类 重载运算符“”的函数的第一个参数和函数的类型都必须是ostream 类型,第二个参数是要进行输入操作的类 只能将重载和的函数, 作为友元函数或普通函数, 不可为成员函数 例4.7 :用重载的“ ” 输出复数 #include iostream using namespace std; class Complex {public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator + (Complex c2); friend ostream operator (ostream,Complex); private: double real; double imag; }; Complex Complex::operator + (Complex c2) {return Complex(real+c2.real,imag+c2.imag);} ostream operator (ostream output,Complex c) {output(c.real+c.imagi)endl; return output; } int main() {Complex c1(2,4),c2(6,10),c3; c3=c1+c2; coutc3; return 0; } operator(cout,c3) 保留输出流的现状,以便连续向输出流插入信息 例如: coutc3c2; 执行过程: coutc3; cout(新值)c2; 运算符 “ ”的重载函数是Complex的友元函数,因此只有在输出Complex的类对象时,才能使用重载的运算符,对其他类型的对象是无效的. 如 couttime1; time1是Time的类对象 return output 例4.8 :用重载的“ ” 输入复数 #include iostream using namespace std; class Complex {public: friend ostream operator (ostream,Complex); friend istream operator (istream,Complex); private: double real; double imag; }; ostream operator (ostream output,Complex c) {output(c.real+c.imagi); return output; } istream operator (istream input,Complex c) {coutinput real part and imaginary part of complex number:; inputc.realc.imag; return input; } int main() {Complex c1,c2; cinc1c2; coutc1=c1endl; coutc2=c2endl; return 0; } operator(cin,c1) 保留输入流的现状,以便连续从输入流提取信息 output(c.real+c.imagi); 如果复数的虚部c.imag为负数,输出什么结果? 例如: 输入的c1为:4,-10; 输出为: c1=(4+-10i) 修改: ostream operator (ostream output,Complex c) {output(c.real; if(c.imag =0) output+“; outputc.imagi)“endl; return output;} 不合理! 思考:引用的重要性? 重载赋值运算符”=“? 数据类型转换是将一种类型的值转换为另一种类型的值
文档评论(0)