私は最近、C++の新しい移動セマンティクスに関する記事を読んでいます。大きなオブジェクトの戻り値を最適に実装する方法は混乱していました。結論は、コピーでの返却のように実装し、移動が最も効果的かどうかをコンパイラに決定させることでした。定数参照は、C++ 11以降でもベストプラクティスですか?
今私は、これが関数パラメータに対しても当てはまるのかどうか疑問に思いました。
は現在、私はこのようなconstの参照を使用します。代わりに、単純なコピーの
void setLargeObject(const LargeObject &obj) {
_obj = obj;
}
:
void setLargeObject(LargeObject obj) {
_obj = obj;
}
をconst参照によって渡された大きなオブジェクトをコピーするためのパラメータは、まだベストプラクティスもされていますC++ 11以降では?
私はそう信じています、参照は大きなオブジェクトに比べて無重力です。 – Vivick
コンパイラは、返される値が移動できることを知ることは簡単だと思います(範囲外になるローカル変数の場合はesp)。私はそれがパラメータに関してそれを知ることはとても簡単だとは思わない。 – Steve