网站大量收购独家精品文档,联系QQ:2885784924

C++程序设计课程介绍-第11章 运算符重载参考.ppt

C++程序设计课程介绍-第11章 运算符重载参考.ppt

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计课程介绍-第11章运算符重载参考

第11章 运算符重载 什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符 运算符重载实例 什么是运算符重载 使系统内置的运算符可以用于类类型 例如:+ 运算符能够实现2个对象间的加。例如:类A的对象a1、a2、a3,希望: a3 = a1 + a2; 即:分别把对象a1和a2的各个数据成员值对应相加,然后赋给对象a3。 问题的提出 把某些事交给系统去做,用户只要知道相加就可 扩充运算符的功能 增强了C++ 语言的可扩充性 使用户定义的类更像系统的内置类型 运算符重载的限制 不是所有的运算符都能重载 重载不能改变运算符的优先级和结合性 重载不能改变运算符的操作数个数 不能创建新的运算符 可以重载的运算符 不能重载的运算符 第11章 运算符重载 什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符 运算符重载实例 运算符重载的方法 运算符重载就是写一个函数解释某个运算符在某个类中的含义 要使得系统能自动找到重载的这个函数,函数名必须要体现出和某个被重载的运算符的联系。 C++中规定,重载函数名为 operator@ 其中,@为要重载的运算符。如要重载“+”运算符,该重载函数名为operator+。要重载赋值运算符,函数名为operator=。 函数原型 运算符的重载不能改变运算符的运算对象数。因此,重载函数的形式参数个数(包括成员函数的隐式指针this)与运算符的运算对象数相同 运算符重载可以重载成成员函数也可以重载成全局函数实现。重载成全局函数时,最好把此函数设为友员函数 如果作为类的成员函数,它的形式参数个数比运算符的运算对象数少1。这是因为成员函数有一个隐含的参数this。在C++中,把隐含参数this作为运算符的第一个参数。 当把一个一元运算符重载成成员函数时,该函数没有形式参数。 把一个二元运算符重载成成员函数时,该函数只有一个形式参数,就是右操作数,当前对象是左操作数。 重载实例 为rational类增加“+”和“*”以及比较的重载函数,用以替换现有的add和multi函数 方案一:重载成成员函数 class Rational { private: int num; int den; void ReductFraction(); public: Rational(int n = 0, int d = 1) { num = n; den = d;} Rational operator+(const Rational r1) const; Rational operator*(const Rational r1) const; bool operator(const Rational r1) const; bool operator==(const Rational r1) const; bool operator(const Rational r1) const; bool operator=(const Rational r1) const; bool operator=(const Rational r1) const; bool operator!=(const Rational r1) const; void display() { cout num / den;} } 函数实现 Rational Rational::operator+(const Rational r1) const { Rational tmp; tmp.num = num * r1.den + r1.num * den; tmp.den = den * r1.den; tmp.ReductFraction(); return tmp; } Rational Rational::operator*(const Rational r1) const { Rational tmp; tmp.num = num * r1.num; tmp.den = den * r1.den; tmp.ReductFraction(); return tmp; } bool Rational::operator(const Rational r1) const { return num * r1.den den * r1.num; } bool Rational::operator==(const Rational r1) const { return num == r1.num den == r1.den;} bo

您可能关注的文档

文档评论(0)

feixiang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档