C++ 面试题
目录

C++ 中什么是运算符重载 (operator overloading)?

· 约 3 分钟读完 · 第 25 / 181 章

推荐答案

运算符重载(Operator Overloading)是 C++ 中的一种特性,允许程序员为自定义类型(如类或结构体)重新定义或重载已有的运算符行为。通过运算符重载,可以使自定义类型的对象能够像内置类型一样使用运算符进行操作,从而增强代码的可读性和简洁性。

例如,可以通过重载 + 运算符来实现两个自定义对象的相加操作,或者重载 << 运算符来支持自定义对象的输出。

本题详细解读

1. 运算符重载的基本概念

运算符重载是通过定义一个特殊的成员函数或全局函数来实现的。这个函数的名称由 operator 关键字后跟要重载的运算符符号组成。例如,重载 + 运算符的函数名为 operator+。

2. 运算符重载的语法

运算符重载可以通过成员函数或全局函数来实现。以下是两种方式的语法示例:

成员函数形式

全局函数形式

3. 可重载的运算符

C++ 中大部分运算符都可以重载,但有一些运算符不能重载,例如:

  • .(成员访问运算符)
  • .*(成员指针访问运算符)
  • ::(作用域解析运算符)
  • ?:(三元条件运算符)

4. 运算符重载的注意事项

  • 运算符重载不能改变运算符的优先级和结合性。
  • 运算符重载不能改变运算符的操作数个数。例如,+ 运算符始终是二元运算符。
  • 重载的运算符应保持语义一致性。例如,重载 + 运算符时,通常应实现加法操作,而不是其他不相关的操作。

5. 示例代码

以下是一个完整的示例,展示如何重载 + 运算符和 << 运算符:

在这个示例中,+ 运算符被重载以实现两个 MyClass 对象的相加操作,<< 运算符被重载以支持 MyClass 对象的输出。