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

第10章有理数类与运算符重载.ppt-湖南大学.ppt

第10章有理数类与运算符重载.ppt-湖南大学.ppt

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

* * * Introduce 介绍 -HNUSS- 湖南长沙.湖南大学软件学院 Introduce 介绍 操作符重载 Operator Overloading   outlines 有理数类 友元函数应用 操作符重载 功能扩展 class Rational{ //数据成员:分子,分母; int fm; int fz; //成员函数:输出信息; void show(); }; 定义一种数据类型:Rational,支持分数形式的有理数的输入输出和四则运算。 如:3/4 + 1/3 = 7/12 3/4 *1/3 = 1/4 private: public: int main(){ //声明一个有理数r //输出r的值 } void show() { coutfz/fmendl;} Rational:: Rational r; r.show(); class Rational{ public: //增加成员函数:初始化数据成员 }; 要对有理数的分子和分母进行初始化—— 构造函数 int main(){ //声明对象时自动调用构造函数 Rational r; //r的值等于初始值0/1 r.show(); } Rational::Rational() { fz = 0; fm = 1;} Rational(); 支持多种初始化方式,比如b =1/2? —— 构造函数重载 class Rational{ public: //增加成员函数:相乘 multiply( ); }; 要对有理数进行乘法运算 int main(){ Rational a(1,4); Rational b(1,3); Rational c; //调用成员方法mutilpy() c = a.multiply(b); } Rational Rational::multiply(Rational y) { Rational result; result.fm = (this-fm) * (y.fm); result.fz = (this-fz) * (y.fz); return result;} Rational 增加加法操作? Rational //rational.h class Rational{ //数据成员声明; //成员函数声明; }; 程序太长。。。 //rational.cpp //成员函数定义 Rational::Rational(){ ... } void Rational::show(){ ... } ... int main(){ Rational r; r.show(); //对象声明 //成员函数的调用 } #include “rational.h” class Rational{ //增加友元函数:相乘 Rational multiply( ); }; 修改乘法运算,使它变成Rational类的友元函数 int main(){ Rational a(1,4),b(1,3),c; c = multiply(a,b);} Rational multiply(Rational x,Rational y) { Rational result; result.fm = (x.fm) * (y.fm); result.fz = (x.fz) * (y.fz); return result;} friend 友元函数不属于该类,是个旁观者,所以每个操作数都必须声明 Rational x,Rational y 友元函数 友元函数 在类的内部进行声明,关键字friend,不受访问限定符控制 在类的外部进行定义,无须域作用符限制 可以访问该类的non-public成员 参与运算的对象都必须声明 无须通过对象调用 格式: class A{ friend B(); } Properties of friendship Friendship granted, not taken Class A must explicitly declare function B friend Not symmetric Not transitive 通过函数调用来实现相乘,仍然不直观 int main(){ Rational a(1,4); Rational b(

文档评论(0)

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

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

1亿VIP精品文档

相关文档