- 3
- 0
- 约1.67万字
- 约 81页
- 2019-08-30 发布于湖北
- 举报
第四章 运算符重载 4.1什么是运算符重载 4.2运算符重载的方法 4.3重载运算符的规则 4.4运算符重载函数作为类成员函数和友元函数 4.5重载双目运算符 4.6重载单目运算符 4.7重载流插入运算符和流提取运算符 4.8不同类型数据间的转换 4.1什么是运算符重载 C++ 为程序员提供了灵活的手段,让程序员自己定义类,自己设计相应的运算符(必须在已有的运算符基础上设计),使之应用于自己定义的类。与函数重载类似,对已有的运算符赋予新的含义,用一个运算符表示不同功能的运算,这就是运算符重载。 实际上,我们在此之前已经使用了运算符重载。如是C++的移位运算符,它又与流对象cout配合作为流插入运算符,这是C++对进行了重载处理。 运算符重载的实质 运算符重载是对已有的运算符赋予多重含义。 必要性 C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类) 实现机制 将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参。 编译系统对重载运算符的选择,遵循函数重载的选择原则。 例4.1 通过成员函数实现复数的加法。 class Complex { private: double real; double imag; public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex complex_add(Complex c2); void display(); } ; Complex Complex::complex_add(Complex c2) { Complex c; c.real=real +c2.real; c.imag=imag+c2.image; return c; } void Complex::display() {cout(real,imagi)endl;} int main() {Complex c1(3,4),c2(5,-10),c3; c3=plex_add(c2); coutc1=; c1.display(); coutc2=; c2.display(); coutc1+c2=; c3.display(); return 0; } 在Complex类中定义了complex_add函数做加法,函数的参数是引用对象,作为一个加数。在函数里定义了临时对象c,两个赋值语句相当于: c.real = this-real +c2.real; c.imag = this-imag+c2.imag; 在main函数中通过对象c1调用加法函数,上面的语句相当于: c.real = c1.real +c2.real; c.imag = c1.imag+c2.imag; 能否用+运算符实现复数加法? 4.2运算符重载的方法 运算符重载的方法是定义一个重载运算符函数,在需要时系统自动调用该函数,完成相应的运算。运算符重载实质上是函数的重载。运算符重载函数的格式是: 数据类型 operator 运算符(形参表) { 重载处理 } 数据类型:是重载函数值的数据类型。 operator 是保留字 规则和限制 C++中可以重载除下列运算符外的所有运算符:. .* :: ?: sizeof() 只能重载C++语言中已有的运算符,不可臆造新的。 不改变原运算符的优先级和结合性。 不能改变操作数个数。 经重载的运算符,其操作数中至少应该有一个是自定义类型。 两种形式 重载为类成员函数。 重载为友元函数。 运算符函数 声明形式 函数类型 operator 运算符(形参) { ...... } 重载为类成员函数时 参数个数=原操作数个数-1 (后置++、--除外) 重载为友元函数时 参数个数=原操作数个数,且至少应该有一个自定义类型的形参。 不能重载的运算符只有5个: . 成员运算符 .* 成员指针运算符 :: 域运算符 sizeof 长度运算符 ?: 条件运算符 重载函数名是由operator和运算符联合组成。 复数加法运算符重载函数原型可以是: Complex operator+ (Complex c2); 例4.2 重载运算符+,用于两个复数相加。 分析:定义一个复数类,用成员函数实现加号的重载函数。两个复数相加结果仍是复数
您可能关注的文档
- 人教版教学课件甘肃省永昌县第一中学生物必修二《62杂交育种与变育种》课件.ppt
- 第9章农业生态系统调节与控制.ppt
- 冬病夏治三伏贴技术操作规范终审版1.ppt
- 健康饮食秘诀.ppt
- 西医药理学第13章解热镇痛抗炎药.ppt
- 2013年高中生物精品教学课件分解纤维素的微生物的分离7人教版选修1.ppt
- 第14章氨基酸和蛋白质.ppt
- 临床生化检验的全面质量控制袁国平.ppt
- 家畜育种学课件13.ppt
- 第3章碳水化合物1.ppt
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 《婴幼儿回应性照料》教案 项目五 19~36月龄幼儿教育活动的设计与指导.pdf VIP
- S7-1200PLC应用技术项目教程 项目一 认识S7-1200PLC.pptx VIP
- 三国志袁绍传2022国庆节3版攻略.pdf VIP
- 2022《蒙氏教育理念下的幼儿园教室环境创设》研究报告14000字.doc VIP
- 《婴幼儿回应性照料》教案 第二讲 婴幼儿营养与喂养的回应性照料.pdf VIP
- 《2025年陕西省事业单位招聘考试综合类职业能力倾向测验真题试卷》.docx VIP
- 《2025年陕西省事业单位招聘考试综合类职业能力倾向测验真题试卷》.docx VIP
- 《婴幼儿回应性照料》教案 第五讲 婴幼儿心理发展的回应性照料.pdf VIP
- 《婴幼儿回应性照料》教案 第八讲 婴幼儿回应性照料评估.pdf VIP
- 事业单位招聘考试综合类职业能力倾向测验强化训练试卷》.docx VIP
原创力文档

文档评论(0)