重载一元运算符
一元运算符从单个操作数生成结果。 可以定义标准一元运算符集重载,以处理用户定义的类型。
可重载的一元运算符
可以在用户定义的类型上重载以下一元运算符:
一元运算符重载声明
可以将重载的一元运算符声明为非静态成员函数或非成员函数。 重载的一元成员函数不采用任何参数,因为它们隐式操作 this
。 非成员函数使用一个参数进行声明。 声明这两种形式时,编译器遵循重载决策规则来确定要使用的函数(如果有)。
以下规则适用于所有前缀一元运算符。 若要将一元运算符函数声明为非静态成员函数,请使用以下声明形式:
return-type
operator
op
();
在此形式中,return-type
是返回类型,op
是上表中列出的运算符之一。
若要将一元运算符函数声明为非成员函数,请使用以下声明形式:
return-type
operator
op
(
class-type
);
在此形式中,return-type
是返回类型,op
是上表中列出的运算符之一,class-type
是要对其操作的参数的类类型。
后缀形式 ++
和 --
采用额外的 int
参数将其与前缀形式区分开来。 有关前缀和后缀形式 ++
和 --
的详细信息,请参阅递增和递减运算符重载。
注意
一元运算符的返回类型没有限制。 例如,逻辑“非”(!
) 返回 bool
值是合理的,但此行为并非强制性的。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈