C++运算符重载限制与复数相加示例

需积分: 17 0 下载量 196 浏览量 更新于2024-08-19 收藏 272KB PPT 举报
"C++面向对象程序设计教程的第四章主要介绍了运算符重载的概念、限制和示例。本章探讨了如何通过重载运算符为特定类提供自定义的行为,例如使用加号"+"实现复数的相加操作。" 在C++中,运算符重载是一项强大的特性,允许程序员根据类的需求对已有的运算符赋予新的含义。然而,运算符重载并非没有限制。以下是关于重载运算符的一些关键限制: 1. **不可臆造新的运算符**:开发者不能创造C++标准中未定义的新运算符。这意味着只能在已有的运算符集合内进行重载,如 "+"、"-"、"*"、"/" 等。 2. **四个“不能改变”原则**: - **运算符操作数的个数**:重载的运算符不能改变其操作数的数量。例如,二元运算符(如 "+", "-")依然需要两个操作数,而一元运算符(如 "++", "--")仍然只需要一个操作数。 - **运算符的优先级**:不能改变运算符的优先级,这意味着 "+" 运算符重载后的优先级还是与原来相同。 - **运算符的结合性**:重载运算符不能改变其结合性,如左结合或右结合。例如,"+" 运算符的左结合性应保持不变。 - **运算符的语法结构**:重载运算符不能改变其在表达式中的语法结构,如 "a + b + c" 的结构不会因重载 "+" 而改变。 举例来说,考虑复数类 "Complex",在C++中,我们可以通过运算符重载使得 "+" 运算符能够执行复数的加法。在例4.1中,定义了一个名为 "Add" 的静态成员函数,它接收两个 "Complex" 类的对象作为参数,并返回它们相加的结果。通过调用 "Complex::Add(z1, z2)",我们可以实现复数的加法操作,如同操作原始的数值类型一样。 在实际的 "main" 函数中,我们创建了三个 "Complex" 对象 "z1"、"z2" 和 "z3",并展示了它们的加法操作。程序运行后,屏幕上会显示出相应的复数相加结果。 运算符重载是C++中实现类行为定制的一种重要方式,但必须遵循一定的规则,以保持代码的清晰性和一致性。在设计类时,合理地重载运算符可以使类的操作更加自然,符合用户的直觉,提高代码的可读性和易用性。