20項 戻り値最適化の促進
戻り値最適化の促進
EffctiveC++ 23項にある通り、ポインタや参照を返してはいけない時があります。その時は、必ずオブジェクトを返します。
オブジェクトを返すときは、下のように書きます。
const Rational operator*(const Rational &lhs, const Rational &rhs) { return Rational(lhs.numerator() * rhs.numerator(), lhs.denominator() * rhs.denominator()); }
このように書くと、コンパイラがテンポラリーオブジェクトを作成しないように最適化できます。
呼び出し時のオーバヘッドをなくすには、inline指定をします。