重载一元运算符

一元运算符从单个操作数生成结果。 可以定义标准一元运算符集重载,以处理用户定义的类型。

可重载的一元运算符

可以在用户定义的类型上重载以下一元运算符:

一元运算符重载声明

可以将重载的一元运算符声明为非静态成员函数或非成员函数。 重载的一元成员函数不采用任何参数,因为它们隐式操作 this。 非成员函数使用一个参数进行声明。 声明这两种形式时,编译器遵循重载决策规则来确定要使用的函数(如果有)。

以下规则适用于所有前缀一元运算符。 若要将一元运算符函数声明为非静态成员函数,请使用以下声明形式:

return-type operator op ();

在此形式中,return-type 是返回类型,op 是上表中列出的运算符之一。

若要将一元运算符函数声明为非成员函数,请使用以下声明形式:

return-type operator op ( class-type );

在此形式中,return-type 是返回类型,op 是上表中列出的运算符之一,class-type 是要对其操作的参数的类类型。

后缀形式 ++-- 采用额外的 int 参数将其与前缀形式区分开来。 有关前缀和后缀形式 ++-- 的详细信息,请参阅递增和递减运算符重载

注意

一元运算符的返回类型没有限制。 例如,逻辑“非”(!) 返回 bool 值是合理的,但此行为并非强制性的。

另请参阅

运算符重载