C++ 一元运算符重载

2024年8月28日 | 阅读 4 分钟

当我们重载一个运算符以对同一类的对象执行相同的操作时,这就是多态性。简单的一元运算符不能与类对象一起使用,因为它们不理解成员变量的行为,并将导致编译错误。我们使用运算符重载来对用户定义的数据类型(类的对象)操作赋予运算符用户定义的含义。

我们可以通过在类本身中定义新的运算符函数,或使用为运算符函数创建的全局友元函数,在 C++ 中使用一元运算符重载。

C++ 中的一元运算符是什么?

C++ 提供了大量的运算符,可用于对数字执行数学逻辑运算。其中一个广泛使用的运算符是一元运算符。一元运算符用于涉及单个操作数的运算。与二元运算符不同,一元运算符不需要两个操作数来计算结果。

一元运算符用于确定单个操作数或变量的新值。使用一元运算符时,操作数可以位于前缀后缀位置。一元运算符具有相同的优先级、从右到左的结合性以及多种形式。

语法

以下是 C++ 一元运算符重载的语法

以下是一些一元运算符的示例

  • 递减运算符 (--),
  • 递增运算符 (++),
  • 逻辑非运算符 (!) ,
  • 一元减号运算符 (-),
  • 取地址 (&),等等。

让我们用一个例子来阐明 C++ 中的一元运算符重载。

I). 用户定义类的一元运算符重载

输出

Original complex number: 3 + 4i
Negated complex number: -3 + -4i

II. 为一元减号 (-) 运算符重载类成员函数

让我们举一个例子来理解如何在 C++ 中为一元减号 (-) 运算符定义类成员函数

输出

num1: Value: 7
num2 (after unary minus): Value: -7

III. 重载全局友元函数的一元减号 (-) 运算符

让我们举一个例子来理解如何在 C++ 中定义全局友元函数的一元减号 (-) 运算符

输出

c1 = -5 - i4
c2 = 5 + i4

说明

  1. 在这个例子中,我们在 Complex 中创建了一个友元函数,它带有一个全局重载的减号 (-) 一元运算符
  2. C++ 中的友元函数是一个特殊的函数,它不是类的成员,但可以访问其protectedprivate 数据
  3. 已给出了一个可以访问实部和虚部变量的全局友元函数,该函数在 Complex 类之外对全局减号 (-) 运算符进行了重载定义。在主函数中使用 c2 对象和一元减号 (-) 运算符后,它被调用。

结论

  • 在 C++ 中,一元运算符用于涉及单个操作数变量的运算。
  • 以下是一些一元运算符的实例:一元减号运算符 (-)、逻辑非运算符 (!)、递增运算符 (++)、递减运算符 (--)、
  • 在 C++ 中,多态性(称为一元运算符重载)用于使运算符更能够对属于类的对象执行类似的操作。
  • 我们使用运算符重载来对用户定义的数据类型(类的对象)操作赋予运算符用户定义的含义。
  • 我们可以通过在类本身中定义新的运算符函数或通过使用为运算符函数创建的全局友元函数来使用一元运算符重载