You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++一元运算符重载时如何判断运算符应放在对象的左侧还是右侧

C++一元运算符重载的位置判断规则
  • 你给出的重载函数属于无参数的类成员一元运算符重载,这种写法固定对应前置运算符,调用时必须把运算符放在对象前面,所以示例中的car o3=*o2是正确写法,反过来写o2*会触发编译报错,找不到匹配的运算符重载。
  • 如果你要实现后置的一元*运算符(仅语法层面允许,实际业务很少这么定义),需要给重载函数加一个无用的int占位参数,写法如下:
car operator * (int) 
{
    car temp;
    temp.a = a*3;
    temp.b = b*3;
    return temp;
}

这时候调用就需要把*放在对象后面,写成o2*即可,占位参数不需要手动传值,编译器会自动填充0。

  • 通用判断规则:
    1. 成员函数重载的一元运算符:无额外参数对应前置,带int占位参数对应后置
    2. 全局函数重载的一元运算符:只有1个类类型参数对应前置,第2个参数为int占位参数对应后置

内容的提问来源于stack exchange,提问作者AK d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:18:03