版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年蒙古幼儿园家长会
- 2026年幼儿园小班神奇的泡泡
- 二、拼拼接接制作手机支架说课稿-2025-2026学年小学综合实践活动五年级下册鲁科版
- 9 生活离不开规则说课稿2025年小学道德与法治三年级下册统编版(五四学制)
- 2026年幼儿园偷东西安全
- 第三节 使用ACDSee管理图像说课稿2025学年初中信息技术河大版2016七年级下册-河大音像版2016
- 2026年爵士舞说课稿模板
- 山南市桑日县客运站建设项目水土保持方案报告表
- 第六节 探究产生感应电流的条件说课稿2025学年初中物理北师大版2024九年级全一册-北师大版2024
- 2026年信息技术说课稿封面
- 亲子活动两天一夜方案策划
- 照明线路安装与检修课件
- ECMO考试试题及答案
- 活动二 节电小贴士教学设计-2023-2024学年小学综合实践活动四年级下册沪科黔科版
- 浙江省宁波市慈溪市2024-2025学年三年级下学期期末数学试卷(含答案)
- 2025年河南省初中学业水平考试中考(会考)地理试卷(真题+答案)
- 23“蛟龙”探海 课件
- 广西柳州市2024-2025学年七年级下学期期末道德与法治试卷(含答案)
- 物流分拣区管理制度
- DeepSeek+AI大模型赋能企业数字化转型实践(ERPMESSRMAPSWMSEMS)
- 4输变电工程施工质量验收统一表式(电缆工程电气专业)-2024年版
评论
0/150
提交评论