《《运算符重载 》课件.pptx》由会员分享,可在线阅读,更多相关《《运算符重载 》课件.pptx(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、汇报人:,C O N T E N T SPARTONEPARTTWO添加添加标题添加添加标题添加添加标题添加添加标题运算符重载使得程序员可以使用自定义的数据类型进行运算,而不仅仅是内置的数据类型。运算符重载是一种编程技术,允许程序员重新定义某个运算符的行为。运算符重载可以提高代码的可读性和可维护性,使得代码更加简洁明了。运算符重载是面向对象编程的一个重要特性,它使得程序员可以更加灵活地使用语言进行编程。简化代码的编写和维护过程提高代码的执行效率增强代码的灵活性和扩展性提高代码的可读性和可维护性运 算 符 重 载 是 C+语 言 的 一 种 特 性,允 许 用 户 重 新 定 义 运 算 符 的
2、 行 为运 算 符 重 载 函 数 必 须 是 类 的 成 员 函 数运 算 符 重 载 函 数 的 参 数 类 型 和 个 数 必 须 与 原 运 算 符 匹 配运 算 符 重 载 函 数 的 返 回 类 型 必 须 与 原 运 算 符 匹 配运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 优 先 级 和 结 合 性运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 原 有 意 义运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 个 数运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 类 型运 算 符 重 载 函 数 不 能 改
3、 变 运 算 符 的 操 作 数 顺 序运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 位 置运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 个 数运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 类 型运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 顺 序运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 位 置运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 个 数运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 类 型运 算 符 重
4、 载 函 数 不 能 改 变 运 算 符 的 操 作 数 顺 序运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 位 置运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 个 数运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 类 型运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 顺 序运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 位 置运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 个 数运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作
5、数 类 型运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 顺 序运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 位 置运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 个 数运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 类 型运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 顺 序运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 位 置运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 个 数运 算 符 重 载 函 数 不 能 改 变
6、运 算 符 的 操 作 数 类 型运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 顺 序运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 位 置运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 个 数运 算 符 重 载 函 数 不 能 改 变 运 算 符 的 操 作 数 类 型运 算 符 重 载运算符重运算符重载是指在是指在C+C+中,可以中,可以对已有的运算符已有的运算符进行重新行重新定定义,使其具有新的功能。,使其具有新的功能。重重载运算符的运算符的语法如下:法如下:返回返回类型型operatoroperator运运算符算
7、符(参数列表参数列表)/)/重重载运算符的代运算符的代码实现重重载运算符的运算符的语法如下:法如下:返回返回类型型operatoroperator运运算符算符(参数列表参数列表)/)/重重载运算符的代运算符的代码实现例如,我例如,我们可以重可以重载“+”“+”运算符,使其可以用于两个自运算符,使其可以用于两个自定定义类的加法运算。的加法运算。例如,我例如,我们可以重可以重载“+”“+”运算符,使其可以用于两个自运算符,使其可以用于两个自定定义类的加法运算。的加法运算。单击此处输入你的项正文,文字是您思想的提炼,请尽量言简意赅的阐述观点单击此处输入你的项正文01返回类型 operator 运算符
8、(参数列表)/重载运算符的代码实现03返回类型 operator 运算符(参数列表)/重载运算符的代码实现05单击此处输入你的项正文,文字是您思想的提炼,请尽量言简意赅的阐述观点单击此处输入你的项正文02单击此处输入你的项正文,文字是您思想的提炼,请尽量言简意赅的阐述观点单击此处输入你的项正文04PARTTHREE复数运算:实现复数的加减乘除等运算线性代数运算:实现线性代数的加减乘除等运算矩阵运算:实现矩阵的加减乘除等运算向量运算:实现向量的加减乘除等运算字符串替换:将字符串中的指定子字符串替换为其他字符串字符串分割:将字符串按照指定的分隔符分割成多个子字符串字符串格式化:将字符串按照指定的格
9、式进行格式化输出字符串拼接:将多个字符串连接成一个新的字符串字符串比较:比较两个字符串的大小或相等性字符串查找:在字符串中查找指定的子字符串数组:存储相同类型的数据,可以通过运算符重载实现数组元素的快速操作集合:存储不同类型的数据,可以通过运算符重载实现集合元素的快速操作数组和集合的遍历:可以通过运算符重载实现数组和集合的遍历操作数组和集合的比较:可以通过运算符重载实现数组和集合的比较操作自定义类:创建新的数据类型,如自定义的日期类、自定义的矩阵类等自定义结构:创建新的数据结构,如自定义的链表、自定义的堆栈等自定义函数:创建新的函数,如自定义的排序函数、自定义的查找函数等自定义算法:创建新的算
10、法,如自定义的排序算法、自定义的查找算法等PARTFOURl重载运算符时,要确保其行为与内置运算符保持一致l重载运算符时,要确保其优先级、结合性和操作数个数与内置运算符保持一致l重载运算符时,要确保其返回值类型与内置运算符保持一致l重载运算符时,要确保其异常处理与内置运算符保持一致确保重载运算符的行为与内置运算符一致不要重载具有特殊含义的运算符,如+和-避免使用容易引起误解的运算符,如+=和-=确保重载运算符的优先级与内置运算符一致注意运算符重载的适用范围,避免在非必要的情况下使用避免在运算符重载中使用复杂的逻辑和算法,可能导致性能下降避免滥用运算符重载,可能导致代码可读性降低确保运算符重载不
11、会破坏原有的语义和规则避免过度重载:避免对同一个运算符进行多次重载,以免增加代码的复杂性和维护难度保持一致性:重载的运算符应该与内置运算符的行为保持一致,以便于理解和使用明确文档:在重载运算符时,应该提供详细的文档说明,包括重载的目的、参数类型、返回值类型等测试和调试:在重载运算符后,应该进行充分的测试和调试,以确保其正确性和稳定性PARTFIVE提高代码可读性增强代码的灵活性提高代码的效率便于维护和扩展代码容易引起混淆:运算符重载可能导致代码难以理解,容易引起混淆难以维护:运算符重载可能导致代码难以维护,需要花费更多的时间和精力容易出错:运算符重载可能导致代码出错,难以调试和修复性能问题:运
12、算符重载可能导致性能问题,影响程序的运行效率优点:提高代码可读性和可维护性缺点:可能导致代码复杂度增加,难以理解权衡方法:根据项目需求和团队能力,选择合适的运算符重载策略注意事项:避免过度使用运算符重载,保持代码简洁明了PARTSIX示 例 代 码:c l a s s C o m p l e x p u b l i c:C o m p l e x(d o u b l e r =0.0,d o u b l e i =0.0):r e(r),i m(i)C o m p l e x o p e r a t o r+(c o n s t C o m p l e x&c)c o n s t r e t
13、u r n C o m p l e x(r e +c.r e,i m +c.i m);p r i v a t e:d o u b l e r e,i m;c l a s s C o m p l e x p u b l i c:C o m p l e x(d o u b l e r =0.0,d o u b l e i =0.0):r e(r),i m(i)C o m p l e x o p e r a t o r+(c o n s t C o m p l e x&c)c o n s t r e t u r n C o m p l e x(r e +c.r e,i m +c.i m);p r i
14、 v a t e:d o u b l e r e,i m;解 释:-C o m p l e x 类 定 义 了 一 个 复 数,包 含 实 部 和 虚 部。-o p e r a t o r+函 数 是 加 法 运 算 符 的 重 载,用 于 实 现 两 个 复 数 的 加 法 运 算。-返 回 值 是 一 个 新 的 C o m p l e x 对 象,其 实 部 和 虚 部 分 别 是 两 个 操 作 数 的 实 部 和 虚 部 的 和。-C o m p l e x 类 定 义 了 一 个 复 数,包 含 实 部 和 虚 部。-o p e r a t o r+函 数 是 加 法 运 算 符
15、的 重 载,用 于 实 现 两 个 复 数 的 加 法 运 算。-返 回 值 是 一 个 新 的 C o m p l e x 对 象,其 实 部 和 虚 部 分 别 是 两 个 操 作 数 的 实 部 和 虚 部 的 和。使 用 示 例:C o m p l e x c 1(1.0,2.0);C o m p l e x c 2(3.0,4.0);C o m p l e x c 3 =c 1 +c 2;C o m p l e x c 1(1.0,2.0);C o m p l e x c 2(3.0,4.0);C o m p l e x c 3 =c 1 +c 2;注 意 事 项:-加 法 运 算
16、符 的 重 载 函 数 应 该 定 义 为 类 的 成 员 函 数,并 且 应 该 声 明 为 c o n s t 。-重 载 函 数 的 参 数 类 型 应 该 与 运 算 符 的 操 作 数 类 型 相 匹 配。-加 法 运 算 符 的 重 载 函 数 应 该 定 义 为 类 的 成 员 函 数,并 且 应 该 声 明 为 c o n s t 。-重 载 函 数 的 参 数 类 型 应 该 与 运 算 符 的 操 作 数 类 型 相 匹 配。示 例 代 码:c l a s s C o m p l e x p u b l i c:C o m p l e x(d o u b l e r =0.
17、0,d o u b l e i =0.0):r e(r),i m(i)C o m p l e x o p e r a t o r-(c o n s t C o m p l e x&o t h e r)c o n s t r e t u r n C o m p l e x(r e -o t h e r.r e,i m -o t h e r.i m);p r i v a t e:d o u b l e r e,i m;c l a s s C o m p l e x p u b l i c:C o m p l e x(d o u b l e r =0.0,d o u b l e i =0.0):r
18、e(r),i m(i)C o m p l e x o p e r a t o r-(c o n s t C o m p l e x&o t h e r)c o n s t r e t u r n C o m p l e x(r e -o t h e r.r e,i m -o t h e r.i m);p r i v a t e:d o u b l e r e,i m;解 释:-C o m p l e x 类 定 义 了 一 个 复 数,包 含 实 部 和 虚 部。-o p e r a t o r-函 数 是 减 法 重 载 函 数,接 受 一 个 C o m p l e x 类 型 的 参 数
19、,并 返 回 减 去 该 参 数 的 结 果。-返 回 的 C o m p l e x 对 象 包 含 新 的 实 部 和 虚 部,即 当 前 对 象 的 实 部 和 虚 部 分 别 减 去参 数 的 实 部 和 虚 部。-C o m p l e x 类 定 义 了 一 个 复 数,包 含 实 部 和 虚 部。-o p e r a t o r-函 数 是 减 法 重 载 函 数,接 受 一 个 C o m p l e x 类 型 的 参 数,并 返 回 减 去 该 参 数 的 结 果。-返 回 的 C o m p l e x 对 象 包 含 新 的 实 部 和 虚 部,即 当 前 对 象 的
20、实 部 和 虚 部 分 别 减 去 参 数 的 实 部 和 虚 部。使 用 示 例:C o m p l e x a(1.0,2.0);C o m p l e x b(3.0,4.0);C o m p l e x c =a -b;C o m p l e x a(1.0,2.0);C o m p l e x b(3.0,4.0);C o m p l e x c =a -b;注 意 事 项:-减 法 重 载 函 数 需 要 接 受 一 个 参 数,并 返 回 结 果。-返 回 的 结 果 类 型 需 要 与 类 类 型 一 致。-减 法 重 载 函 数 需 要 实 现 减 法 操 作,即 返 回 减
21、 去 参 数 的 结 果。-减 法 重 载 函 数 需 要 接 受 一 个 参 数,并 返 回 结 果。-返 回 的 结 果 类 型 需 要 与 类 类 型 一 致。-减 法 重 载 函 数 需 要 实 现 减 法 操 作,即 返 回 减 去 参 数 的 结 果。示 例 代 码:c l a s s C o m p l e x p u b l i c:C o m p l e x(d o u b l e r =0.0,d o u b l e i =0.0):r e(r),i m(i)C o m p l e x o p e r a t o r*(c o n s t C o m p l e x&o t
22、 h e r)c o n s t r e t u r n C o m p l e x(r e *o t h e r.r e -i m *o t h e r.i m,r e *o t h e r.i m +i m *o t h e r.r e);p r i v a t e:d o u b l e r e,i m;c l a s s C o m p l e x p u b l i c:C o m p l e x(d o u b l e r =0.0,d o u b l e i =0.0):r e(r),i m(i)C o m p l e x o p e r a t o r*(c o n s t C
23、 o m p l e x&o t h e r)c o n s t r e t u r n C o m p l e x(r e *o t h e r.r e -i m *o t h e r.i m,r e *o t h e r.i m +i m *o t h e r.r e);p r i v a t e:d o u b l e r e,i m;解 释:-该 代 码 定 义 了 一 个 复 数 类 C o m p l e x,并 重 载 了 乘 法 运 算 符*。-重 载 的 乘 法 运 算 符 接 受 一 个 C o m p l e x 类 型 的 参 数,并 返 回 一 个 C o m p l
24、 e x 类 型 的 结 果。-重 载 的 乘 法 运 算 符 的 实 现 使 用 了 复 数 的 乘 法 公 式。-该 代 码 定 义 了 一 个 复 数 类 C o m p l e x,并 重 载 了 乘 法 运 算 符*。-重 载 的 乘 法 运 算 符 接 受 一 个 C o m p l e x 类 型 的 参 数,并 返 回 一 个 C o m p l e x 类 型 的 结 果。-重 载 的 乘 法 运 算 符 的 实 现 使 用 了 复 数 的 乘 法 公 式。使 用 方 法:-创 建 两 个 C o m p l e x 类 型 的 对 象 a 和 b。-使 用 a *b 来 计
25、 算 a 和 b 的 乘 积。-创 建 两 个 C o m p l e x 类 型 的 对 象 a 和 b。-使 用 a *b 来 计 算 a 和 b 的 乘 积。注 意 事 项:-重 载 的 乘 法 运 算 符 必 须 定 义 为 类 的 成 员 函 数。-重 载 的 乘 法 运 算 符 的 参 数 类 型 和 返 回 类 型 必 须 与 原 运 算 符 一 致。-重 载 的 乘 法 运 算 符 必 须 定 义 为 类 的 成 员 函 数。-重 载 的 乘 法 运 算 符 的 参 数 类 型 和 返 回 类 型 必 须 与 原 运 算 符 一 致。示 例 代 码:c l a s s C o
26、m p l e x p u b l i c:C o m p l e x(d o u b l e r =0.0,d o u b l e i =0.0):r e(r),i m(i)C o m p l e x o p e r a t o r+(c o n s t C o m p l e x&c)c o n s t r e t u r n C o m p l e x(r e +c.r e,i m +c.i m);C o m p l e x o p e r a t o r-(c o n s t C o m p l e x&c)c o n s t r e t u r n C o m p l e x(r e
27、 -c.r e,i m -c.i m);C o m p l e x o p e r a t o r*(c o n s t C o m p l e x&c)c o n s t r e t u r n C o m p l e x(r e *c.r e -i m *c.i m,r e *c.i m +i m *c.r e);C o m p l e x o p e r a t o r/(c o n s t C o m p l e x&c)c o n s t d o u b l e d e n o m i n a t o r =c.r e *c.r e +c.i m *c.i m;r e t u r n
28、 C o m p l e x(r e *c.r e +i m *c.i m)/d e n o m i n a t o r,(i m *c.r e -r e *c.i m)/d e n o m i n a t o r);d o u b l e r e a l()c o n s t r e t u r n r e;d o u b l e i m a g()c o n s t r e t u r n i m;p r i v a t e:d o u b l e r e,i m;c l a s s C o m p l e x p u b l i c:C o m p l e x(d o u b l e r
29、 =0.0,d o u b l e i =0.0):r e(r),i m(i)C o m p l e x o p e r a t o r+(c o n s t C o m p l e x&c)c o n s t r e t u r n C o m p l e x(r e +c.r e,i m +c.i m);C o m p l e x o p e r a t o r-(c o n s t C o m p l e x&c)c o n s t r e t u r n C o m p l e x(r e -c.r e,i m -c.i m);C o m p l e x o p e r a t o r
30、*(c o n s t C o m p l e x&c)c o n s t r e t u r n C o m p l e x(r e *c.r e -i m *c.i m,r e *c.i m +i m *c.r e);C o m p l e x o p e r a t o r/(c o n s t C o m p l e x&c)c o n s t d o u b l e d e n o m i n a t o r =c.r e *c.r e +c.i m *c.i m;r e t u r n C o m p l e x(r e *c.r e +i m *c.i m)/d e n o m
31、i n a t o r,(i m *c.r e -r e *c.i m)/d e n o m i n a t o r);d o u b l e r e a l()c o n s t r e t u r n r e;d o u b l e i m a g()c o n s t r e t u r n i m;p r i v a t e:d o u b l e r e,i m;示 例 说 明:-该 示 例 展 示 了 如 何 实 现 复 数 的 除 法 运 算 符 重 载。-除 法 运 算 符 重 载 函 数 接 受 一 个 C o m p l e x 类 型 的 参 数,并 返 回 一 个 C
32、o m p l e x 类 型 的 结 果。-除 法 运 算 符 重 载 函 数 首 先 计 算 分 母 的 平 方 和,然 后 根 据 复 数 除 法 的 公 式 计 算 结 果。-除 法 运算 符 重 载 函 数 使 用 了 成 员 访 问 运 算 符(.)来 访 问 C o m p l e x 对 象 的 成 员 变 量。-该 示 例 展 示 了 如 何 实 现 复 数 的 除 法 运 算 符 重 载。-除 法 运 算 符 重 载 函 数 接 受 一 个 C o m p l e x 类 型 的 参 数,并 返 回 一 个 C o m p l e x 类 型 的 结 果。-除 法 运 算
33、符 重 载 函 数 首 先 计 算 分 母 的 平 方 和,然 后 根 据 复 数 除 法 的 公 式 计 算 结 果。-除 法 运 算 符 重 载 函 数 使 用 了 成 员 访 问 运 算 符(.)来 访 问 C o m p l e x 对 象 的 成 员 变 量。示 例 应 用:-可 以 使 用 除 法 运 算 符 重 载 函 数 来 计 算 两 个 复 数 之 间 的 除 法 运 算。-例 如,可 以 使 用 C o m p l e x a(3.0,4.0),b(1.0,2.0);a /b;来 计 算 两 个 复 数 a 和 b 的 除 法 运 算。-可 以 使 用 除 法 运 算 符 重 载 函 数 来 计 算 两 个 复 数 之 间 的 除 法 运 算。-例 如,可 以 使 用 C o m p l e x a(3.0,4.0),b(1.0,2.0);a /b;来 计 算 两 个 复 数 a 和 b 的 除 法 运 算。汇报人: