(中职)编程语言基础------C++模块10教学课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《(中职)编程语言基础------C++模块10教学课件.ppt》由会员分享,可在线阅读,更多相关《(中职)编程语言基础------C++模块10教学课件.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、YCF正版可修改PPT(中职)编程语言基础-C+模块10教学课件模块模块10运算符重载运算符重载任务任务1运算符重载的定义运算符重载的定义任务任务2运算符重载规则运算符重载规则任务任务3运算符重载的两种形式运算符重载的两种形式任务任务4特殊运算符重载举例特殊运算符重载举例返回任务任务1运算符重载的定义运算符重载的定义重载是面向对象设计的重要特征,运算符重载是对已有的运算符赋予重载是面向对象设计的重要特征,运算符重载是对已有的运算符赋予重载是面向对象设计的重要特征,运算符重载是对已有的运算符赋予重载是面向对象设计的重要特征,运算符重载是对已有的运算符赋予多重含义,使用同一个运算符作用于不同类型的
2、数据导致不同的行为。多重含义,使用同一个运算符作用于不同类型的数据导致不同的行为。多重含义,使用同一个运算符作用于不同类型的数据导致不同的行为。多重含义,使用同一个运算符作用于不同类型的数据导致不同的行为。C+C+中经重载后的运算符能直接对用户自定义的数据进行操作运算,中经重载后的运算符能直接对用户自定义的数据进行操作运算,中经重载后的运算符能直接对用户自定义的数据进行操作运算,中经重载后的运算符能直接对用户自定义的数据进行操作运算,这就是这就是这就是这就是C+C+语言中的运算符重载所提供的功能。运算符重载进一步提语言中的运算符重载所提供的功能。运算符重载进一步提语言中的运算符重载所提供的功能
3、。运算符重载进一步提语言中的运算符重载所提供的功能。运算符重载进一步提高了面向对象的灵活性、可扩充性和可读性。高了面向对象的灵活性、可扩充性和可读性。高了面向对象的灵活性、可扩充性和可读性。高了面向对象的灵活性、可扩充性和可读性。下一页返回任务任务1运算符重载的定义运算符重载的定义上一页 下一页返回任务任务1运算符重载的定义运算符重载的定义对于上述的复数类的两个对象对于上述的复数类的两个对象对于上述的复数类的两个对象对于上述的复数类的两个对象oneone和和和和twotwo,不能直接用,不能直接用,不能直接用,不能直接用“one+two”one+two”来来来来表示两个复数的相加。但为了符合人
4、们的习惯,有时希望对于新的数表示两个复数的相加。但为了符合人们的习惯,有时希望对于新的数表示两个复数的相加。但为了符合人们的习惯,有时希望对于新的数表示两个复数的相加。但为了符合人们的习惯,有时希望对于新的数据类型仍然使用已有的一些运算符进行操作,如果希望用据类型仍然使用已有的一些运算符进行操作,如果希望用据类型仍然使用已有的一些运算符进行操作,如果希望用据类型仍然使用已有的一些运算符进行操作,如果希望用“+”+”来表来表来表来表示两个复数的加法,这就需要对运算符示两个复数的加法,这就需要对运算符示两个复数的加法,这就需要对运算符示两个复数的加法,这就需要对运算符“+”+”进行重载。进行重载。
5、进行重载。进行重载。上一页 下一页返回任务任务1运算符重载的定义运算符重载的定义操作符是系统预先定义好的一些函数名称,所以,可以把运算符重载操作符是系统预先定义好的一些函数名称,所以,可以把运算符重载操作符是系统预先定义好的一些函数名称,所以,可以把运算符重载操作符是系统预先定义好的一些函数名称,所以,可以把运算符重载看作是函数重载的一种特殊形式,对于运算符的重载和函数的重载是看作是函数重载的一种特殊形式,对于运算符的重载和函数的重载是看作是函数重载的一种特殊形式,对于运算符的重载和函数的重载是看作是函数重载的一种特殊形式,对于运算符的重载和函数的重载是类似的,都是使同一个名称具有多重含义,它
6、体现了面向对象的程序类似的,都是使同一个名称具有多重含义,它体现了面向对象的程序类似的,都是使同一个名称具有多重含义,它体现了面向对象的程序类似的,都是使同一个名称具有多重含义,它体现了面向对象的程序设计的多态性。设计的多态性。设计的多态性。设计的多态性。只有类的成员函数和类的友元函数才能够访问类的私有数据成员,只有类的成员函数和类的友元函数才能够访问类的私有数据成员,只有类的成员函数和类的友元函数才能够访问类的私有数据成员,只有类的成员函数和类的友元函数才能够访问类的私有数据成员,因此只有将运算符重载为类的成员函数或是类的友元函数时,才能使因此只有将运算符重载为类的成员函数或是类的友元函数时
7、,才能使因此只有将运算符重载为类的成员函数或是类的友元函数时,才能使因此只有将运算符重载为类的成员函数或是类的友元函数时,才能使被重载的运算符能够对新的数据类型进行操作。被重载的运算符能够对新的数据类型进行操作。被重载的运算符能够对新的数据类型进行操作。被重载的运算符能够对新的数据类型进行操作。上一页返回任务任务2运算符重载规则运算符重载规则在对运算符进行重载时要遵循以下一些规则。在对运算符进行重载时要遵循以下一些规则。在对运算符进行重载时要遵循以下一些规则。在对运算符进行重载时要遵循以下一些规则。(1)(1)被重载的运算符一定不能是下面这些运算符中的任意一个被重载的运算符一定不能是下面这些运
8、算符中的任意一个被重载的运算符一定不能是下面这些运算符中的任意一个被重载的运算符一定不能是下面这些运算符中的任意一个:“.”“.”类成员运算符类成员运算符类成员运算符类成员运算符“*”“*”指针运算符指针运算符指针运算符指针运算符“:”:”类作用域运算符类作用域运算符类作用域运算符类作用域运算符“?:”?:”条件运算符条件运算符条件运算符条件运算符除此之外,除此之外,除此之外,除此之外,c+c+的其他运算符都可以重载。的其他运算符都可以重载。的其他运算符都可以重载。的其他运算符都可以重载。下一页返回任务任务2运算符重载规则运算符重载规则 (2)(2)运算符被重载后,不能改变优先级和结合性,也不
9、能改变语法结运算符被重载后,不能改变优先级和结合性,也不能改变语法结运算符被重载后,不能改变优先级和结合性,也不能改变语法结运算符被重载后,不能改变优先级和结合性,也不能改变语法结构,即不能将单日运算符重载为双日运算符。构,即不能将单日运算符重载为双日运算符。构,即不能将单日运算符重载为双日运算符。构,即不能将单日运算符重载为双日运算符。(3)(3)被重载的运算符必须是系统预先已经定义好的运算符,即不能自被重载的运算符必须是系统预先已经定义好的运算符,即不能自被重载的运算符必须是系统预先已经定义好的运算符,即不能自被重载的运算符必须是系统预先已经定义好的运算符,即不能自己定义新的运算符。己定义
10、新的运算符。己定义新的运算符。己定义新的运算符。(4)(4)被重载的运算符虽然可以用来做任何事情,但是最好还是应使其被重载的运算符虽然可以用来做任何事情,但是最好还是应使其被重载的运算符虽然可以用来做任何事情,但是最好还是应使其被重载的运算符虽然可以用来做任何事情,但是最好还是应使其新的功能与系统预先定义的功能相似,使人容易理解。新的功能与系统预先定义的功能相似,使人容易理解。新的功能与系统预先定义的功能相似,使人容易理解。新的功能与系统预先定义的功能相似,使人容易理解。上一页返回任务任务3运算符重载的两种形式运算符重载的两种形式 重载运算符的日的是重载运算符的日的是重载运算符的日的是重载运算
11、符的日的是:对于有类对象参与的运算,使其表达式看起来对于有类对象参与的运算,使其表达式看起来对于有类对象参与的运算,使其表达式看起来对于有类对象参与的运算,使其表达式看起来像基本类型数据那样一日了然,与我们熟悉的数学表达形式一致。因像基本类型数据那样一日了然,与我们熟悉的数学表达形式一致。因像基本类型数据那样一日了然,与我们熟悉的数学表达形式一致。因像基本类型数据那样一日了然,与我们熟悉的数学表达形式一致。因此,运算符应该被重载为类的成员或友元函数,这样才能直接访问类此,运算符应该被重载为类的成员或友元函数,这样才能直接访问类此,运算符应该被重载为类的成员或友元函数,这样才能直接访问类此,运算
12、符应该被重载为类的成员或友元函数,这样才能直接访问类的私有数据成员。的私有数据成员。的私有数据成员。的私有数据成员。10.3.1运算符重载乃成员函数运算符重载乃成员函数将运算符重载为类的成员函数的格式为将运算符重载为类的成员函数的格式为将运算符重载为类的成员函数的格式为将运算符重载为类的成员函数的格式为:operator:operator)下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式【例例例例10-210-2】复数类加减运算重载复数类加减运算重载复数类加减运算重载复数类加减运算重载成员函数形式。成员函数形式。成员函数形式。成员函数形式。上一页 下一页返回任务任务3运算符重载的两
13、种形式运算符重载的两种形式上一页 下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式上一页 下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式上一页 下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式上一页 下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式10.3.2运算符重载为友元函数运算符重载为友元函数将运算符重载为友元函数的格式为将运算符重载为友元函数的格式为将运算符重载为友元函数的格式为将运算符重载为友元函数的格式为:friendfriend operator operator)【例例例例10-310-3】复数类加减法运算重载复数类加减法运算重
14、载复数类加减法运算重载复数类加减法运算重载友元函数形式。友元函数形式。友元函数形式。友元函数形式。上一页 下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式上一页 下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式上一页 下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式上一页 下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式运行结果:运行结果:运行结果:运行结果:上一页 下一页返回任务任务3运算符重载的两种形式运算符重载的两种形式10.3.3两种重载方式讨论两种重载方式讨论从上面的例子可以看出,运算符的两种重载形式都可以实现我们需要从上面的例子可以看
15、出,运算符的两种重载形式都可以实现我们需要从上面的例子可以看出,运算符的两种重载形式都可以实现我们需要从上面的例子可以看出,运算符的两种重载形式都可以实现我们需要的功能,而且主函数中执行运算的表达方式是一样的。但是成员函数的功能,而且主函数中执行运算的表达方式是一样的。但是成员函数的功能,而且主函数中执行运算的表达方式是一样的。但是成员函数的功能,而且主函数中执行运算的表达方式是一样的。但是成员函数和友元函数是不同的。从表面上看,友元函数比成员函数多一个形参,和友元函数是不同的。从表面上看,友元函数比成员函数多一个形参,和友元函数是不同的。从表面上看,友元函数比成员函数多一个形参,和友元函数是
16、不同的。从表面上看,友元函数比成员函数多一个形参,友元函数的参数对应参与运算的操作数。实际上,成员函数友元函数的参数对应参与运算的操作数。实际上,成员函数友元函数的参数对应参与运算的操作数。实际上,成员函数友元函数的参数对应参与运算的操作数。实际上,成员函数所在的对象就是第一个操作数,成员函数如果带参数则是第二个操作所在的对象就是第一个操作数,成员函数如果带参数则是第二个操作所在的对象就是第一个操作数,成员函数如果带参数则是第二个操作所在的对象就是第一个操作数,成员函数如果带参数则是第二个操作数。数。数。数。虽然有些运算符既可以重载为成员函数,又可以重载为友元函数虽然有些运算符既可以重载为成员
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 语言 基础 C+ 模块 10 教学 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内