- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第12章 面向对象程序设计的其它技术 12.1 运算符重载 12.2 流类库 12.3 模板 12.1 运算符重载 12.1.1 友元运算符 12.1.2 类运算符 12.1.3 友元及类运算符的应用 12.1.4 ++和--运算符的重载 12.1.1 友元运算符 #include iostream.h class CComplex { private: double m_dReal; double m_dImag; public: CComplex(double r=0, double i=0) { m_dReal=r; m_dImag=i; } double GetRealPart() { return m_dReal; } double GetImagPart() { return m_dImag; } }; 12.1.1 友元运算符 class CComplex { private: double m_dReal; double m_dImag; public: CComplex(double r=0, double i=0) { m_dReal=r; m_dImag=i; } double GetRealPart() { return m_dReal; } double GetImagPart() { return m_dImag; } friend CComplex operator + (CComplex a, CComplex b); }; CComplex operator + (CComplex a, CComplex b) { return CComplex(a.m_dReal+b.m_dReal, a.m_dImag+b.m_dImag); } 12.1.2 类运算符 运算符重载函数可以被说明为类成员函数,这种运算符称为类运算符 : 12.1.3 友元及类运算符的应用 对于[例12.2]中运算符 + 的重载,如果主函数如下: void main() { CComplex c(1, 2), z; z=3+c; } 有编译错误。因为程序中没定义友元运算符,编译器将3+c翻译成 3.operator +(c),报错。故此类情形只能定义友元函数。 如果需进行类运算符的多重运算,【例12.2】中CComplex类的对象c1、c2、c3进行c1+c2+c3,因为 + 的结合性为从左至右,故编译器将之解释为(c1.operator +(c2)).operator +(c3),因此要求运算符重载函数的返回值类型为CComplex或CComplex。 返回类型为对象时,将调用拷贝构造函数返回隐藏对象,其各数据成员的取值与被复制对象各数据成员取值间的关系取决于拷贝构造函数,而拷贝构造函数由编程者定义,具有不确定性,故建议返回引用类型,而且返回引用类型具有较高的运行效率。 与上述类似的原因,重载运算符的参数类型最好也为引用类型。 12.1.4 ++和--运算符的重载 因为存在前缀和后缀的情况,这两个运算符的重载有些复杂,用 @ 表示这两个运算符中的一个,它们的重载函数存在下述规律: 12.2 流类库 12.2 流类库 12.2.1 格式化输入输出 12.2.2 运算符 和 的重载 12.2.3 流式文件 12.2.4 流错误 12.2.1 格式化输入输出 通常使用标志位设置函数是long setf(long)控制输入输出流格式, 该函数返回值为此次操作前的标志字。 ios类含有多个与控制格式有关的函数。另外也可以使用内部格式控制操作函数setiosflags(long)等控制输入输出流的格式,具体使用方法可参见Visual C++联机帮助。 12.2.2 运算符 和 的重载 C++支持插入符 和抽取符 的重载,函数重载可以直观地实现对任何数据对象进行输入输出控制,其格式如下: ostream operator (ostream MyStream, MyClassName a) { //抽取符重载函数 … return MyStream; } istream operator (istream MyStream, MyClassName a) { //插入符重载函数 … return MyStream; } 12.2.3 流式文件 C++支持流式文件,与文件的交互都被等效成对与文件相关联的数据流的插入和抽取,由流提供对文件的读写功能,至于流与文件之间如何交互由流去控制,编程者只需要和流打交道,而没有
您可能关注的文档
最近下载
- 国新办“924”政策组合拳深度解读:创新货币政策工具箱,多措并举推动经济高质量发展.docx
- 售电企业电力交易负荷预测管理导则.pdf VIP
- 发电企业电力市场交易辅助决策信息系统技术规范.pdf VIP
- 北斗产业园项目可行性研究报告.docx
- 2024电力现货交易辅助决策系统解决方案.pdf
- 2023发电企业现货交易辅助决策管理系统.docx
- KSC20系列开关磁阻电动机控制器使用说明书V_1.2.docx
- 一种电力现货交易辅助决策系统模型.pdf VIP
- 北斗产业园风险分析与应对策略.docx
- Unit 1 Greetings P1 Greet each other(教学课件)一年级英语上学期(沪教版 2024).pptx
文档评论(0)