版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+语言程序设计第十一组C+语言程序设计第九章 类的特殊成员C+语言程序设计1C+语言程序设计2基本知识a9.5 运算符重载 运算符重载 是C+的一个特性,使得程序员可以把C+的运算符扩展到用户自定义的类类型中 C+中预定义的运算符,如+、=、等,其操作对象只能是基本数据类型,对于很多用户自定义类型,也需要类似的运算操作 使用运算符重载可以使C+代码更直观、易懂,函数调用更方便、简洁 运算符重载的实质就是函数重载 对已有的运算符赋予多重含义,使同一运算符作用于不同类型的数据时发生不同的行为C+语言程序设计39.5 运算符重载 例:使用字符串处理函数完成字符串的复制和连接C+语言程序设计4/使用
2、字符串处理函数复制和连接字符串使用字符串处理函数复制和连接字符串#include #include using namespace std;void main() char *s1=Hello; char *s2=world; char s380 =; strcpy(s3,s1); /字符串复制字符串复制 couts3endl; strcat(s3,s2); /字符串连接字符串连接 couts3endl;9.5 运算符重载 例:使用重载运算符“=”和“+”完成字符串的复制和连接C+语言程序设计5/使用重载运算符复制和连接字符串使用重载运算符复制和连接字符串#include #include u
3、sing namespace std;void main() string s1=Hello; string s2=world; string s3; s3=s1; /字符串复制字符串复制 couts3endl; s3=s1+s2; /字符串连接字符串连接 couts3endl;9.5 运算符重载 运算符重载的规则 重载运算符时,运算符的运算顺序和优先级不变,操作数个数不变 不能创造新的运算符,只能重载C+中已有的运算符,并且规定有6个运算符不能重载 一般来讲,重载后的运算符的功能应当与运算符的实际意义相符C+语言程序设计6运运 算算 符符含含 义义.类属关系运算符类属关系运算符.*成员指针运
4、算符成员指针运算符:作用域运算符作用域运算符?:条件运算符条件运算符#编译预处理符号编译预处理符号sizeof取数据类型的长度取数据类型的长度9.5 运算符重载 运算符重载的形式: 重载为类的成员函数 函数定义可以放在类的声明中,也可以在类声明的外部 类外定义的形式为:函数类型 类名:operator 运算符(形参表) 函数体 重载为类的友元函数 类的声明中需要声明该函数为友元函数:friend 函数类型 operator 运算符(形参表); 函数定义必须在类的外部,形式为:函数类型 operator 运算符(形参表) 函数体 C+语言程序设计79.5 运算符重载 关于运算符重载定义的几点说明
5、 函数类型指明了重载运算符的返回值类型,也就是运算结果类型 operator是定义运算符重载的关键字 “运算符”即要重载的运算符名称 形参表给出的是运算符需要的操作数 重载为成员函数:对象本身就是其中的一个操作数,形参表内参数的数目比操作数的数目少一个 重载为友元函数:每个形参代表运算符的一个操作数,形参表内参数的数目等同于操作数的数目C+语言程序设计8 例:创建一个复数类,将+、+=运算符重载为成员函数9.5 运算符重载C+语言程序设计9/创建一个复数类,将创建一个复数类,将+、+=运算符重载为成员函数运算符重载为成员函数#include #include using namespace s
6、td;class complexpublic: complex(double real=0,double imag=0): r(real),i(imag) complex operator +(complex&);/重载运算符的函数原型重载运算符的函数原型 complex operator -(complex&); complex& operator +=(complex&); void print() coutsetiosflags(ios:showpos)r iiendl;private: double r , i;9.5 运算符重载C+语言程序设计10co
7、mplex complex:operator +(complex& c)/重载重载“+”运算符运算符 return complex(r+c.r,i+c.i);complex complex:operator -(complex& c)/重载重载“-”运算符运算符 return complex(r-c.r,i-c.i);Complex& complex:operator +=(complex& c)/重载重载“+=”运算符运算符 r+=c.r; i+=c.i; return *this;9.5 运算符重载C+语言程序设计11void main() complex
8、c1(1,1),c2(3,3),c3; c3=c1+c2; /复数相加复数相加 c3.print(); c3=c1-c2; /复数相减复数相减 c3.print(); c3+=c2+=c1; /复数相加后赋值复数相加后赋值 c3.print(); 例:创建一个复数类,将+、+=运算符重载为友元函数9.5 运算符重载C+语言程序设计12/创建一个复数类,将创建一个复数类,将+、+=运算符重载为成员函数运算符重载为成员函数#include #include using namespace std;class complexpublic: complex(double real=0,double i
9、mag=0): r(real),i(imag) friend complex operator +(complex&,complex&); friend complex operator -(complex&,complex&); friend complex& operator +=(complex&,complex&); void print() coutsetiosflags(ios:showpos)r iiendl;private: double r , i;9.5 运算符重载C+语言程序设计13complex operator
10、+(complex& c1,complex& c2) /重载重载“+”运算符运算符 return complex(c1.r+c2.r,c1.i+c2.i);complex operator -(complex& c1,complex& c2) /重载重载“-”运算符运算符 return complex(c1.r-c2.r,c1.i-c2.i);complex& operator +=(complex& c1,complex& c2) /重载重载“+=”运算符运算符 c1.r+=c2.r; c1.i+=c2.i; return c1;9.5 运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 简单版工厂转让合同协议2篇
- 2024年度建筑施工沟通协调合同3篇
- 某城市地理环境课件
- 2024年度二手电动车广告投放合同2篇
- 零售店劳动合同范本
- 工程伦理课件下载
- 运维技术服务合同
- 2024年度二七区郭家咀铁三官庙N06地块安置区供排水工程合同2篇
- 公司股东入股合作协议书
- 七年纪上册课件
- GB/T 702-2017热轧钢棒尺寸、外形、重量及允许偏差
- 500kw 新能源储能变流器技术协议书
- 领导干部带班记录
- 《故都的秋》《荷塘月色》联读课件15张-统编版高中语文必修上册
- 人生礼仪习俗课件
- 消防员劳动合同范本(3篇)
- 卫生部手足口病诊疗指南
- DB34-T 2290-2022水利工程质量检测规程-高清现行
- 中国技能大赛第45届世界技能大赛混凝土建筑赛项选拔赛技术文件
- 千古一帝秦始皇-完整版课件
- 焊接返修工艺规程
评论
0/150
提交评论