工信版(中职)编程语言基础------C++模块10教学课件

2022-10-26
| 47页
| 73人阅读
| 0人下载
普通

内容正文:

YCF (中职)编程语言基础------C++模块10教学课件 1 模块10运算符重载 任务1运算符重载的定义 任务2运算符重载规则 任务3运算符重载的两种形式 任务4特殊运算符重载举例 返回 任务1运算符重载的定义 重载是面向对象设计的重要特征,运算符重载是对已有的运算符赋予多重含义,使用同一个运算符作用于不同类型的数据导致不同的行为。C++中经重载后的运算符能直接对用户自定义的数据进行操作运算,这就是C++语言中的运算符重载所提供的功能。运算符重载进一步提高了面向对象的灵活性、可扩充性和可读性。 下一页 返回 任务1运算符重载的定义 上一页 下一页 返回 任务1运算符重载的定义 对于上述的复数类的两个对象one和two,不能直接用“one + two”来表示两个复数的相加。但为了符合人们的习惯,有时希望对于新的数据类型仍然使用已有的一些运算符进行操作,如果希望用“+”来表示两个复数的加法,这就需要对运算符“+”进行重载。 上一页 下一页 返回 任务1运算符重载的定义 操作符是系统预先定义好的一些函数名称,所以,可以把运算符重载看作是函数重载的一种特殊形式,对于运算符的重载和函数的重载是类似的,都是使同一个名称具有多重含义,它体现了面向对象的程序设计的多态性。 只有类的成员函数和类的友元函数才能够访问类的私有数据成员,因此只有将运算符重载为类的成员函数或是类的友元函数时,才能使被重载的运算符能够对新的数据类型进行操作。 上一页 返回 任务2运算符重载规则 在对运算符进行重载时要遵循以下一些规则。 (1)被重载的运算符一定不能是下面这些运算符中的任意一个: “.” 类成员运算符 “*” 指针运算符 “::” 类作用域运算符 “?:” 条件运算符 除此之外,c++的其他运算符都可以重载。 下一页 返回 任务2运算符重载规则 (2)运算符被重载后,不能改变优先级和结合性,也不能改变语法结构,即不能将单日运算符重载为双日运算符。 (3)被重载的运算符必须是系统预先已经定义好的运算符,即不能自己定义新的运算符。 (4)被重载的运算符虽然可以用来做任何事情,但是最好还是应使其新的功能与系统预先定义的功能相似,使人容易理解。 上一页 返回 任务3运算符重载的两种形式 重载运算符的日的是:对于有类对象参与的运算,使其表达式看起来像基本类型数据那样一日了然,与我们熟悉的数学表达形式一致。因此,运算符应该被重载为类的成员或友元函数,这样才能直接访问类的私有数据成员。 10. 3. 1运算符重载乃成员函数 将运算符重载为类的成员函数的格式为: <类名>::operator<运算符><(参数表)> 下一页 返回 任务3运算符重载的两种形式 【例10 -2】复数类加减运算重载—成员函数形式。 上一页 下一页 返回 任务3运算符重载的两种形式 上一页 下一页 返回 任务3运算符重载的两种形式 上一页 下一页 返回 任务3运算符重载的两种形式 上一页 下一页 返回 任务3运算符重载的两种形式 上一页 下一页 返回 任务3运算符重载的两种形式 10. 3. 2运算符重载为友元函数 将运算符重载为友元函数的格式为: friend<函数返回类型> operator<运算符><(参数表)> 【例10 -3】复数类加减法运算重载—友元函数形式。 上一页 下一页 返回 任务3运算符重载的两种形式 上一页 下一页 返回 任务3运算符重载的两种形式 上一页 下一页 返回 任务3运算符重载的两种形式 上一页 下一页 返回 任务3运算符重载的两种形式 运行结果: 上一页 下一页 返回 任务3运算符重载的两种形式 10. 3. 3两种重载方式讨论 从上面的例子可以看出,运算符的两种重载形式都可以实现我们需要的功能,而且主函数中执行运算的表达方式是一样的。但是成员函数和友元函数是不同的。从表面上看,友元函数比成员函数多一个形参,友元函数的参数对应参与运算的操作数。实际上,成员函数 所在的对象就是第一个操作数,成员函数如果带参数则是第二个操作数。 虽然有些运算符既可以重载为成员函数,又可以重载为友元函数;但是一般而言,应将一元运算符重载为成员函数,将二元运算符重载为友元函数。如果运算符的第一个操作数为类对象,则运算符可以重载为成员函数。“()”、“[]”、“一>”、“一>*”及“=”必须重载为成员函数) 上一页 下一页 返回 任务3运算符重载的两种形式 如果运算符有一个操作数不是当前类的类型,则运算符应重载为友元函数。例如,要计算(7. 53一cl)的值,其中cl是COmp1ex类对象。 如果利用友元函数重载形式,则该

资源预览图

工信版(中职)编程语言基础------C++模块10教学课件
1
工信版(中职)编程语言基础------C++模块10教学课件
2
工信版(中职)编程语言基础------C++模块10教学课件
3
工信版(中职)编程语言基础------C++模块10教学课件
4
工信版(中职)编程语言基础------C++模块10教学课件
5
工信版(中职)编程语言基础------C++模块10教学课件
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。