- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++程序设计(第二版) 主编 杨长兴 刘卫国 中国水利水电出版社 第7章 重载与模板 问题的提出 1、基本数据类型系统提供了大量运算符。 如:int x,y; x=x+y; 表达简洁,使用方便。 2、问题的提出: 对于串类的对象合并: string x, y; strcat(x,y);不如上述运算那样简单,希望能改造为:x=x+y;更加简单和直观! 因此,需要对“+”进行不同的解释,即:重载 一、C++中的运算符 1、大多数系统预定义运算符都能重载,除开以下: . :: ?: # *(当乘法运算符时可重载) “.” “::” “*”在C++中有特定定义 “?:”不值得重载 “#”不能被重载 2、重载时的注意事项: (1)不能改变优先级; (2)不能改变结合性; (3)不能改变运算符所需操作数的个数; (4)重载后,可按这些运算符的表达方式使用。 运算符重载的语法形式 一、通过运算符重载函数进行重载 1、运算符重载函数是成员函数 语法形式: Type X::operator@(参数表) { //相对于该类而定义的操作 } 2、运算符重载函数是友元函数 语法形式: Type operator@(参数表) { //相对于该类而定义的操作 } 一元和二元运算符 一、运算符重载函数定义的两种方式 1、成员函数和友元函数 2、差别的关键原因:this指针 二、一元运算符 1、不论前缀还是后缀,需要一个操作数 2、对于任意一元运算符α: (1)成员函数重载运算符 定义 type x::operator α( ) {…} 显式调用 objX.operator α( ) 隐式调用 αobjX 或:ojbXα (2)友元函数重载运算符 定义 type operator α(Xobj) {…} 显式调用 operatorα(obj X) 隐式调用 αojbX 或:objX α 三、二元运算符 1、需要两个操作数; 2、对于任意二元运算符β: 7.2 模板 模板包含函数模板与类模板 7.2.1 函数模板 1.函数模板的定义 函数模板的定义为: template 类型参数表 返回类型函数名(形参表) { //函数定义体 } 【例】函数模板的说明 template class Glorp Glorp min( Glorp a, Glorp b ) { return a b ? a : b; } 注意:对函数模板的说明和定义必须是全局作用域,函数模板不能说明为类的成员函数 2.函数模板的实例化 在函数模板中,函数模板只是说明,不能直接执行,需要实例化为模板函数后才能执行。当编译系统发现一个函数调用时,将根据实参表中的类型生成一个重载函数即模板函数。 【例】函数模板的实例化 #include iostream.h template class A A fab(A x) { return x=0?x,-x; } void main() { int i=5; double y=-5.4; cout”整数的绝对值”fab(i)endl; //A实例化为int cout”实数的绝对值”fab(y)endl; // A实例化为double } 7.2.2 类模板 1.类模板的定义 template 类型形参表 class 类名 { //类说明体 } template 类型形参表 返回类型类名 类型名表::成员函数1(形参表) { //成员函数定义体 } template 类型形参表 返回类型类名 类型名表::成员函数2(形参表) { //成员函数定义体 } 。。。 template 类型形参表 返回类型类名 类型名表::成员函数n(形参表) { //成员函数定义体 } 【例】设计一套完整的算术运算来补充add函数。
您可能关注的文档
- C#桌面系统开发案例教程 教学课件 作者 李建青 第十章.ppt
- C#桌面系统开发案例教程 教学课件 作者 李建青 第四章.ppt
- C#桌面系统开发案例教程 教学课件 作者 李建青 第五章.ppt
- C#桌面系统开发案例教程 教学课件 作者 李建青 第一章.ppt
- C/C++程序设计教程电子教案 C语言程序设计1.ppt
- C/C++程序设计教程电子教案 C语言程序设计2.ppt
- C/C++程序设计教程电子教案 C语言程序设计3.ppt
- C/C++程序设计教程电子教案 C语言程序设计4.ppt
- C/C++程序设计教程电子教案 C语言程序设计5.ppt
- C/C++程序设计教程电子教案 C语言程序设计6.ppt
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)