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

C++重载*=运算符时如何返回调用该函数的对象?

重载Fraction类*=运算符返回自身的实现

要实现更新调用对象后直接返回它、不创建新对象的需求,只需要做两处修改:

  1. 修改函数返回类型为引用:将原返回类型Fraction改为Fraction&,避免返回时触发对象拷贝
  2. 返回当前对象本身:用return *this;替代原占位符,*this就是已经完成更新和化简的调用对象实例

修改后的完整代码:

Fraction& Fraction::operator *= (const Fraction& rightOp)
{
    numerator = numerator * rightOp.numerator;
    denominator = denominator * rightOp.denominator;
    simplify();

    return *this;
}

补充说明

  • 复合赋值运算符(*=、+=等)的标准设计惯例就是返回左操作数的引用,这和C++内置类型的行为保持一致,同时支持链式调用(比如f1 *= f2 *= f3;)
  • this是成员函数中指向当前调用对象的指针,*this解引用后就是对象本身,返回它的引用直接返回已更新的原对象,完全不会创建新对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:20:22