第9章 重载.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 重载 主要内容 函数重载 复制构造函数 操作符重载 成员操作符重载 友元操作符重载 1、函数重载 函数的相关概念: 函数的定义: bool bigger(int x, int y) { … } 函数的原型 bool bigger(int, int); 函数的调用 status = bigger(8,10); status = bigger(tempA, tempB); 1、函数重载(续) 函数重载(overloading)是指不同的函数采用相同的名字,彼此间通过形参列表加以区分 表示本质上相同的操作 形参个数不同,或 对应位置形参的类型不同 //函数1:求指定点到原点的距离 double distance(float posX, float posY) { double dis; dis = sqrt(posX * posX + posY * posY); return dis; } //函数2:求两点之间的距离 double distance(float pos1X, float pos1Y, float pos2X, float pos2Y) { double dis; dis = sqrt((pos1X - pos2X)*(pos1X - pos2X) + (pos1Y - pos2Y)* (pos1Y - pos2Y)); return dis; } //…包含输入输出标准库及声明名字空间std的使用 int abs(int x) // 整型数据的绝对值函数 { cout Using integer version of abs().\n; return (x = 0 ? x : -x); } double abs(double x) // 浮点型数据的绝对值函数 { cout Using floating-point version of abs().\n; return (x = 0.0 ? x : -x); } long abs(long x) // 长整型数据的绝对值函数 { cout Using long integer version of abs().\n; return (x = 0 ? x : -x); } int main() { cout abs(-5) \n; // 调用abs()的整数版本 cout abs(-5L) \n; // 调用abs()的长整数版本 cout abs(3.14) \n; // 调用abs()的浮点版本 return 0; } #include string int max(int a, int b)//求两个整数中之大者 { return ((ab)?a:b); } string max(string str1, string str2) //求两串中大者 { return (str1str2? str1: str2); } class ScoreRec { public: //默认构造函数,将所有项置为空 ScoreRec() { name = ; ID = ; score = ; } //带参数的构造函数 ScoreRec(string newName, string newID, char newScore) { name = newName; ID = newID; score = newScore; } //…其他成员函数略 private: string name; string ID; char score; // A-F }; 使用函数重载的注意事项(1) 不能用返回值类型区别重载函数 编译程序选择相应的重载函数版本时函数返回值类型不起作用 例: int fun(int); double fun(int); 如果两个函数的名字和形参表完全相同,只有返回值类型不同,则认为是对同一函数的重复定义,出现编译错误 使用函数重载的注意事项(2) 不能用typedef声明的类型别名区别重载函数 typedef只是给已经存在的数据类型提供别名,并没有创建新的数据类型。 例: typedef double MONEY; double calculate(double income); MONEY calculate(MONEY income); 使用函数重载的注意事项(3) 不能用参数传递方式区别重载函数 如果两个函数的形参个数和对应位置的形参类型并无区别,仅采用了不同的参数传递方式(即按值传递和按引

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档