小菜求解一个关于运算符重载的有关问题

小菜求解一个关于运算符重载的问题!
Money Money::operator*(int a)
{dollar*=a;
 cent*=a;
 if(cent>=100)
  {dollar=cent/100;
  cent%=100;
  }
 return * this;
}


这个为什么不对呢?
上面那个和以下这个又有什么不同呢?


Money Money::operator *(int mu)
{
Money mult=*this;
mult.dollar*=mu;
mult.cent*=mu;
if(mult.cent>=100)
{
mult.dollar+=mult.cent/100;
mult.cent%=100;
}
return mult;
}

------解决方案--------------------
上面那个 把 被乘数本身 修改了啊

比如 money * a 把money的值也修改了