20項 戻り値最適化の促進

戻り値最適化の促進



EffctiveC++ 23項にある通り、ポインタや参照を返してはいけない時があります。その時は、必ずオブジェクトを返します。



オブジェクトを返すときは、下のように書きます。

const Rational operator*(const Rational &lhs, const Rational &rhs)
{
    return Rational(lhs.numerator() * rhs.numerator(),
                lhs.denominator() * rhs.denominator());
}

このように書くと、コンパイラテンポラリーオブジェクトを作成しないように最適化できます。



呼び出し時のオーバヘッドをなくすには、inline指定をします。