C++语言程序设计 教学课件 ppt 作者 邓振杰 第08章

上传人:E**** 文档编号:89342923 上传时间:2019-05-23 格式:PPT 页数:27 大小:158.50KB
返回 下载 相关 举报
C++语言程序设计 教学课件 ppt 作者  邓振杰 第08章_第1页
第1页 / 共27页
C++语言程序设计 教学课件 ppt 作者  邓振杰 第08章_第2页
第2页 / 共27页
C++语言程序设计 教学课件 ppt 作者  邓振杰 第08章_第3页
第3页 / 共27页
C++语言程序设计 教学课件 ppt 作者  邓振杰 第08章_第4页
第4页 / 共27页
C++语言程序设计 教学课件 ppt 作者  邓振杰 第08章_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《C++语言程序设计 教学课件 ppt 作者 邓振杰 第08章》由会员分享,可在线阅读,更多相关《C++语言程序设计 教学课件 ppt 作者 邓振杰 第08章(27页珍藏版)》请在金锄头文库上搜索。

1、第8章 运 算 符 重 载,8.1 概 述 8.2 运算符重载的一般规则 8.3 一些特殊操作符的重载,运算符重载就是给已有运算符赋予更多的含义。通过重新定义运算符,使它能够用于特定类的对象执行特定的功能。运算符重载提供了重新定义语言、扩展语言的能力,使程序更加容易阅读和调试。,8.1 概 述,运算符通常是针对类中的私有成员进行操作,因此重载运算符应该能够访问类中的私有成员,所以运算符重载一般采用成员函数或友元函数的方式。运算符重载的过程是将现有运算符与成员函数或友元函数相关联,使得该运算符具有将该类的对象用作其操作数的能力。,如: if (obj1=obj2) 其中obj1和obj2为类的对

2、象,对象的比较运算可在成员函数中定义或在友元中定义,并与比较运算符关联。编译器可以通过检查运算符数据类型来区分重载的运算符,运算符重载是多态性的一种形式,即运算符多态性。,8.2 运算符重载的一般规则,运算符重载具有以下原则: (1)重载的运算符是C+中已经存在的运算符,不能够主观创造。 (2)运算符重载不能改变运算符的语法结构,即操作数的个数。,(3)运算符重载不能改变C+语言中已定义的运算符的优先顺序和结合性。 (4)运算符重载一般不改变运算符功能。 (5)不能重载的运算符有:sizeof()运算符;成员运算符(.);指向成员的指针运算符(*);作用域运算符(:);条件运算符(?:)。,8

3、.3 一些特殊操作符的重载,运算符重载函数是指含有实际的重载运算符的函数,一般采用两种形式:重载为类的成员函数形式和友元函数形式。,8.3.1 一元运算符重载 8.3.1.1 重载为类的成员函数 将运算符重载函数说明为类的成员函数的格式如下: operator () 要重载的运算符必须置于关键字operator之后。,【例8.1】重载运算符+。 class Point private: int xcoord; int ycoord; public: Point ()xcoord =0; ycoord =0; void operator+() +xcoord; + ycoord; ;,void

4、main() Point obj1; obj1+; /使 xcoord、ycoord增加1 +obj1; /使 xcoord、ycoord增加2 ,8.3.1.2 重载为类的友元函数 将运算符重载函数说明为类的友元函数的格式如下: operator () 必须在类的定义中说明该运算符重载函数为类的友元函数。,【例8.2】用友元函数重载运算符+。 #include “iostream.h“ class Point private: int xcoord; int ycoord; public:,Point() /无参数构造函数 xcoord = 0; ycoord=0; Point(int x,

5、int y) /单一参数构造函数 xcoord = x; ycoord =y; ,void display()cout “(” xcoord ”,”ycoord”)”endl; friend Point operator+(Point ,Point operator+( Point ,void main() Point p1(10,10),p2; p2=p1+; p1.display(); p2.display(); p2=+p1; p1.display(); p2.display(); ,程序运行结果为: (11,11) (10,10) (12,12) (12,12),8.3.2 二元运算符

6、重载 8.3.2.1 二元算术运算符重载,【例8.3】加法运算符重载 Point Point:operator+(Point a) Point p; /临时对象 p.xcoord= xcoord+ a. xcoord ; p.ycoord= ycoord+ a. ycoord ; return p; /返回临时对象 ,【例8.4】为字符串重载+运算符。 String String:operator+(String ss) String temp; /声明一个临时字符串temp strcpy(temp.str,str); /将该字符串复制到temp strcat(temp.str,ss.str)

7、; /参数字符串相加 return temp; /返回temp字符串 ,按以下方式使用: String s1 = “Welcome“; String s2 = “to C+“; String s3; s3 = s1 + s2;,【例8.5】重载复合赋值运算符。 void Point:operator+=(Point a) xcoord += a.xcoord; ycoord += a.ycoord; ,8.3.2.2 重载比较和逻辑运算符 比较和逻辑运算符是二元运算符,二元运算符需要两个对象才能进行比较。可重载的比较运算符包括,=,=和!=。可重载的逻辑运算符包括 ,8.3.2.3 重载赋值运算符 【例8.6】分析下面程序执行情况。 class String private: char *str; public:,String(char *s = “) int length = strlen(s); str = new charlength+1; strcpy(str,s); String() /析构函数 delete str; ,void display() coutstr; ;,void main() String s1(“Welcome to C+ world n“); String s2; s2 = s1; s1.display(); s2.display(); ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号