重载运算符 (仅限 C + +)

您可以重新定义或重载 C++ 中大多数内置运算符的函数。这些运算符可以全局重载,也可以逐类重载。 重载运算符作为函数实现,可以是成员函数或全局函数。

重载运算符称为 运算符函数。 您使用关键字 operator 在运算符前面声明运算符函数。 重载运算符与重载函数不同,但与重载函数一样,它们通过与运算符一起使用的操作数的数量和类型来区分。

考虑标准 + (加号) 运算符。 当此运算符与不同标准类型的操作数配合使用时,运算符的含义略有不同。 例如,两个整数的加法与两个浮点数的加法不同。 C++ 允许您在将标准 C++ 运算符应用于类类型时为其定义自己的含义。

您可以使下列任何运算符超负荷:



其中 () 是函数调用运算符, [] 是下标运算符。

您可以使以下运算符的一元格式和二元格式都超负荷:

不能使下列操作程序超负荷:

不能使预处理器符号 ###超负荷。

运算符函数可以是非静态成员函数,也可以是具有至少一个具有 class , reference to class , enumeration 或 reference to enumeration 类型的参数的非成员函数。

不能更改运算符的优先顺序,分组或操作数。

重载运算符 (函数调用运算符除外) 在自变量列表中不能具有缺省自变量或省略号。

必须将重载的 =[]()-> 运算符声明为非静态成员函数,以确保它们接收 lvalues 作为其第一个操作数。

运算符 newdeletenew[]delete[] 不遵循本节中描述的一般规则。

将继承除 = 运算符以外的所有运算符。