- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 7.1 运算符重载的语法 7.2 一元运算符 7.3 二元运算符的重载 7.4 特殊的运算符 7.4.1 =运算符的重载 7.4.2 ++和--运算符的重载 7.4.3 new 和delete运算符的重载 7.4.4 []的重载 第 7 章运算符重载 运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于 不同类型的数据导致不同类型的行为。它的主要优点之一就是用户自定义的数据类型可使用编译系统预定义的运算符。 运算符重载函数的一般形式为: 类型 类名::operator 重载的运算符 (参数列表) { 相关操作; } 运算符重载类似于函数重载,只是这个函数的名字必须以operator开头。 它的参数个数由以下两个因素决定: (1) 该操作符是一元操作符还是二元操作符 【 7.1 运算符重载的语法】 当运算符函数是全局函数时,需要在类中将该函数说明为友员。 复数类运算符重载 //EXAMPLE7_01.H #ifndef EXAMPLE7_01_H //用于防止文件的多重编译 #define EXAMPLE7_01_H class Complex { public: // 构造函数 Complex(){realpart=0.0;imagpart=0.0;} Complex(double r1,double i1){realpart=r1;imagpart=i1;} (2) 它是被定义为全局函数还是一个成员函数。如果是全局函数,那么对 于一元操作符它的参数个数就是1个(后置++、--除外),二元操作符 的参数个数是2个;如果是成员函数,那么对于一元操作符的参数个数 为0,二元操作符的参数个数为1。这是由于该类本身也作为一个操作 数参与计算,所以成员函数的参数要比全局函数的参数个数少1。 例 7-1 Complex(const Complex c) {realpart=c.realpart;imagpart=c.imagpart;} Complex(double c){realpart = (double)c;imagpart = 0;} // 取复数的实部和虚部 double real(){return realpart;} double imag(){return imagpart;} ? // 算术运算符重载为成员函数 Complex operator + (const Complex); Complex operator - (const Complex); Complex operator * (const Complex); Complex operator / (const Complex); ? // 赋值运算符重载为成员函数 Complex operator = (const Complex); ? (续) // 关系运算符重载为成员函数 bool operator==(const Complex); bool operator!=(const Complex); // 显示复数 void Display(); private: double realpart; double imagpart; }; #endif 这个复数类定义了复数的+、-、*、/、==、!=等各项操作。 //算术运算符重载为友元函数 friend Complex operator + (const Complex,const Complex); friend Complex operator - (const Complex,const Complex); …… (1)虽然运算符重载可以改变运算符原来的行为,但是它并不能改变运算符 的优先级、结合性、操作数的个数。也不能创建新的运算符,只能重载 现有的运算符。 运算符重载具有非常强的灵活性。在具体应用的时候要注意以下几点问题: 对于成员函数,一元运算符的参数为0;二元运算符的参数个数为1,如复数类中的==运算符,参数个数为2。对于友元函数,参数的个数与操作数个数相同。 (3)在重载运算符()、[]、-或者=时,运算符重载函数必须声明为类的一 个成员。对于其他的运算符,运算符重载函数可以是成员函数或者友元 函数。 (2)运算符重载函数的参数至少有一个必须是自定义类型。 (续) 运算符
您可能关注的文档
- 安徽医科大学护理学基础课件 临终护理.临终护理.ppt
- 安徽医科大学护理学基础课件 排便.排便.ppt
- 安徽医科大学护理学基础课件 排尿护理.排尿护理.ppt
- 安徽医科大学护理学基础课件 人的成长与发展.人的成长与发展.ppt
- 安徽医科大学护理学基础课件 人的基本需要.人的基本需要.ppt
- 安徽医科大学护理学基础课件 舒适与安全.舒适与安全.ppt
- 安徽医科大学护理学基础课件 卫生保健体系.卫生保健体系.ppt
- 安徽医科大学护理学基础课件 文化与护理.文化与护理.ppt
- 安徽医科大学护理学基础课件 无菌技术.无菌技术.ppt
- 安徽医科大学护理学基础课件 吸入给药法.吸入给药法.ppt
- DB12 046.89-2011 产品单位产量综合电耗计算方法及限额 第89部分:手机 .docx
- DB12 046.88-2011 产品单位产量综合电耗计算方法及限额 第88部分:晶振 .docx
- DB12T 419-2010 无公害农产品 核桃栽培管理技术规范 .docx
- DB12T 417-2010 沙化和荒漠化监测技术规程.docx
- DB12T 449-2011 民用建筑四防门通用技术条件.docx
- DB12 046.100-2011 产品单位产量综合能耗计算方法及限额 第100部分: 果汁饮料 .docx
- DB12T 427-2010 葱姜蒜中205种农药多残留测定方法-GCMS法.docx
- DB12T 421-2010 有机农产品 甘薯有机栽培技术规范.docx
- DB12T 426-2010 蔬菜水果中205种农药多残留测定方法-GCMS法 .docx
- 《老年人身体康复》精品课件——项目6 中国传统康复技术.pptx
最近下载
- 《模拟电子技术基础》模电期末试题集及答案(8套).pdf
- 2023年太原师范学院数据科学与大数据技术专业《操作系统》科目期末试卷A(有答案).docx VIP
- 物联网工程专业生涯发展.pptx VIP
- 2024年04月自然资源部南海局所属事业单位2024年度公开招考61名工作人员笔试参考题库附带答案详解.docx VIP
- 中国移动湖北移动招聘笔试题库2023.pdf
- SENNHEISER森海塞尔话筒剧院EK 3241使用说明书Instruction manual EK 3241.pdf
- 七年级数学《平面直角坐标系》单元教学设计.doc VIP
- 移动公司笔试题目.docx VIP
- 2023-2024学年广东省深圳市龙华区部编版四年级上册期末考试语文试卷【含答案】.pdf
- 业务跟单年度工作总结.pptx VIP
文档评论(0)