《C程序设计《运算符重载》-精选课件(公开).pptVIP

《C程序设计《运算符重载》-精选课件(公开).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++程序设计 运算符重载 第7章运算符重载 为什么要进行运算符重载 运算符重载的方法 重载运算符的规则 运算符重载函数作为类成员函数和友元函数 重载双目运算符 重载单目运算符 重载流插入运算符和流提取运算符 不同类型数据间的转换 第7章运算符重载 函数重载,就是赋给同一个函数名多个含义。 运算符重载是指同一个运算符可以施加于不同类型的操作数上面。 7.1 为什么要进行运算符重载 有了针对自定义类型数据的运算符重载,使我们编程时感到十分方便,而且写出的表达式与数学表达式很相似,符合人们的习惯。 7.2 运算符重载的方法 重载运算符的函数的一般格式如下: 函数类型 operator运算符名称(形参列表) { 对运算符的重载处理 } 函数名是由operator和运算符组成,如operator+意思是对运算符“+”重载。 例如:若要实现上述两个Complex类对象的加法运算,只要编写一个对“+”运算符进行重载的函数即可,函数描述如下: Complex Complex::operator+(Complex c2) {?return Complex(real+c2.real,imag+c2.imag); } 5.2 向上类型转换 【例7-1】对“+”运算符进行重载来实现两个Complex类对象的加法运算。 #include iostream #include string using namespace std; class Complex {public: ??? Complex(double r=0,double i=0){??? real=r;???? imag=i; } ??? Complex operator+(Complex); //对“+”运算符进行重载 ??? void display(string); ?private: ??? double real,imag;}; Complex Complex::operator+(Complex c2) // “+”运算符重载函数的类外定义 {? return Complex(real+c2.real,imag+c2.imag); } ?void Complex::display(string str) ?{ coutstr=(real,imagi)endl; } ?int main() ?{ Complex a(3,8), b(5,7), c, d; ? d=a+b; //直接使用重载了的运算符+ c=a .operator+(b); //调用运算符重载函数operator+的第二种形式 ? c.display(c=a+b); ? d.display(d=a+b); ? ?return 0;} 7.3 重载运算符的规则 (1)C++不允许用户自己定义新的运算符,只能对C++语言中已有的运算符进行重载。例如,虽然在某些程序设计语言中用双字符“**”作为求幂运算符,但是在使用C++进行程序设计时,不能将“**”作为运算符进行重载,因为“**”不是C++语言的合法运算符。 (2)运算符重载针对新类型数据的实际需要,对原有运算符进行适当的改造。一般来讲,重载的功能应当与原有功能相类似。 7.3 重载运算符的规则 (3)C++允许重载的运算符包括C++中几乎所有的运算符。具体规定如表7-1所示。 表7-1 C++允许重载的运算符 7.3 重载运算符的规则 7.3 重载运算符的规则 (4)坚持4个“不能改变”。即不能改变运算符操作数的个数;不能改变运算符原有的优先级;不能改变运算符原有的结合性;不能改变运算符原有的语法结构。 单目运算符重载后只能是单目运算符,双目运算符重载后依然是双目运算符。 C++语言已经预先规定了每个运算符的优先级,以决定运算次序。不论怎么进行重载,各运算符之间的优先级别不会改变。 C++语言已经预先规定了每个运算符的结合性。 (5)重载的运算符必须和用户定义的自定义类型对象一起使用,其参数至少应有一个是类对象(或类对象的引用)。也就是说,参数不能全部是C++的标准类型,以防止用户修改用于标准类型数据的运算符的性质。 (6)重载运算符的函数不能有默认的参数,否则就改变了运算符参数的个数。 (7)用于类对象的运算符一般必须重载,但有两个例外,运算符“=”和“”可以不必用户重载。 7.4 运算符重载函数作为类的成员函数和友元函数 7.4.1运算符重载函数作为类的成员函数 7.4.2运算符重载函数作为类的友元函数 7.4.1运算符重载函数作为类的成员函数 将运算符重载函数定义为类的成员函数的原型在类的内部声明格式如下: class 类名{ … 返回

文档评论(0)

小米兰 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档