- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c第十一章重载与模板
第11章 重载与模板 第11章 重载与模板 11.1 重载 11.2 模板 问题举例——复数的运算 用“+”、“-”能够实现复数的加减运算吗? ——重载“+”、“-”运算符 11.1 重载 只能重载已有运算符,可重载C++中除下列运算符外的所有运算符:. -:: ?: sizeof 不能改变原运算符的优先级和结合性,不能改变操作数个数 经重载的运算符,其操作数中至少应该有一个是自定义类型 重载运算符的函数不能有默认的参数 用于类对象的运算符一般必须重载,但有两个例外, “=”和“”不必重载 运算符重载函数 函数类型 operator 运算符(形参) { ...... } 重载为类成员函数时,参数个数=原操作数个数-1(后置++、--除外) 重载为友元函数时,参数个数=原操作数个数,且至少应该有一个自定义类型的形参 双目运算符B重载的设计 如果要重载B为类成员函数,使之能够实现表达式opd1 B opd2,其中opd1为A类对象,则形参类型应该是opd2所属的类型 经重载后,表达式opd1 B opd2相当于opd1.operator B(opd2) 例题 将双目“+”、“-”运算符重载为复数类的成员函数 操作: c1+5 c1-c2 前置单目运算符U重载的设计 如果重载单目运算符U为类的成员函数,使之能够实现表达式U opd,其中opd为A类对象,则应该无形参 经重载后,表达式U opd相当于opd.operator U() 后置单目运算符重载的设计 如果要重载后置++或--为类成员函数,使之能够实现表达式opd++或opd--,其中opd为A类对象,则应具有一个int类型形参,可无参数名字 经重载后,表达式opd++相当于opd.operator ++(0) 重载单目运算符为成员函数 将运算符前置++和后置++重载为复数类的成员函数 规则: 实部和虚部分别加1 操作数: 操作数是复数类的对象 前置和后置的区别 运算符重载友元函数的设计 如果需要重载一个运算符,使之能够用于操作某类对象的私有成员,可将运算符重载为该类的友元函数 函数的形参代表自左至右次序排列的各操作数 后置单目运算符++和--重载函数,形参列表中要增加一个int,但不必写形参名 友元函数的设计 双目运算符B重载后,表达式opd1 B opd2等同于operator B(opd1,opd2) 单目运算符U重载后,表达式 U opd等同于operator U(opd) 后置单目运算符++和--重载后,表达式 opd ++等同于operator ++(opd,0) 重载为友元函数 将双目+、-重载为复数类的友元函数 操作数: 3.6+c2 c1-c2 重载 返回类型必须是引用:因为无论函数返回的是什么,它都会成为下一个运算符的左边的参数,返回cout的当前值以便连续的输出 11.2 模版 1、函数模版 建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用函数就称为函数模板。 在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能 函数模板例题 2、类模版 类模板声明的形式: template typename T1, typename T2 class 类模板名 { //类模板成员声明; }; 在类模板外定义成员函数的形式: template typename T1, typename T2 函数类型 类模板名T1,T2::函数名(参数表) 用一个模板类建立对象时声明形式: 类模板名int,double 对象; * * 刘传平 中国地质大学(北京) class CComplex { public: CComplex(double r=0.0,double i=0.0) { Real=r; Imag=i; } void display() {coutReal+Imagiendl; } private: double Real; double Imag; }; class CComplex {public: CComplex(double r=0,double i=0); void display(); CComplex operator +(double d);//+重载为成员函数 CComplex operator -(CComplex c2); private: double Real; double Imag; }; void main() { CComplex c1(5,4),c2(2,10),c3; coutc1=; c1.display(); coutc2=; c2.d
您可能关注的文档
- C1601班-专题班会.ppt
- CAD2008的安装、破解和卸载.ppt
- CAonCD数据库–生命图书馆.ppt
- CB–02–消费者行为与市场营销.ppt
- CATIAV5基础知识及问答–冲压工艺.ppt
- CC–LINK远程模拟量模块.ppt
- CCTV–1晚间黄金剧场时段广告价值评估.ppt
- CEO对90后说话.ppt
- CCTV–2财经《滔滔不绝》栏目介绍.pptx
- CET–6短对话理解–2011年12月六级.ppt
- 2024年中国钽材市场调查研究报告.docx
- 2024年中国不锈钢清洗车市场调查研究报告.docx
- 2024年中国分类垃圾箱市场调查研究报告.docx
- 2024年中国水气电磁阀市场调查研究报告.docx
- 2024年中国绿藻片市场调查研究报告.docx
- 2010-2023历年初中毕业升学考试(青海西宁卷)数学(带解析).docx
- 2010-2023历年福建厦门高一下学期质量检测地理卷.docx
- 2010-2023历年初中数学单元提优测试卷公式法(带解析).docx
- 2010-2023历年初中毕业升学考试(山东德州卷)化学(带解析).docx
- 2010-2023历年初中毕业升学考试(四川省泸州卷)化学(带解析).docx
最近下载
- My Life in China and America [容闳自传:我在中国和美国的生活].pdf
- 常熟银行研究报告:回归小微初心,乘风乡村振兴.doc VIP
- 浙商证券-宠物行业从乖宝宠物看宠物赛道:陪伴需求催化宠物新蓝海,食品赛道频现龙头.pdf
- ctgd-sop v5风口安装作业指导书.pdf VIP
- 消化道出血有关试题附有答案.docx VIP
- 湘教版美术《家乡的古建筑》说课稿.doc
- 上海地区不同垂直骨面型成人临床冠中心高度的比较研究.pdf VIP
- 2023年 AMC 10B 数学竞赛(原卷+答案).doc VIP
- 世界贸易组织.ppt VIP
- 2023年 AMC 10A 数学竞赛(原卷+答案).doc
文档评论(0)