低レベルな話でスマソ

C++で複素数クラスつくってるんだけど
四則演算でオペレータオーバーロードすると
参照で値返せないよね。

かといって
complex &mul(const complex &a, const complex &b, complex &c)
{
c←a*b
return c
}

とすると可解読性が悪くなってしまう。。。
こんなときどうすればいいっすか?