シェアード ポインターの受け渡し: 参照または値による
shared_ptr (boost または C 11 STL から) を関数に渡すとき、 const 参照 (void foo(constshared_ptr
伝統的に、参照による受け渡しのほうが、不必要なコピー操作を回避できるため高速になると考えられていました。ただし、C and Beyond 2011 で専門家 (Scott、Andrei、Herb) が議論したように、これはもう当てはまりません。
値渡しか参照渡しか?
オブジェクトの所有権を明示的に共有する必要がない限り (データ構造間またはスレッド間など)、shared_ptr を値で渡す説得力のある理由はありません。 const 参照による受け渡しは、次の理由から推奨されます:
値で渡す場合
shared_ptr を値で渡すことをお勧めするのは、次の場合のみです。目的は、オブジェクトの所有権を関数に譲渡することです。これは通常、関数がオブジェクトの有効期間を管理する必要がある場合に当てはまります。
追加の考慮事項
最適なパフォーマンスを得るには、shared_ptr が有効かどうかを考慮することが重要です。移動を最適化することができます。 Scott Meyers が説明したように、移動の最適化により、不必要なコピー操作の必要性を排除できます。ただし、この最適化は C の特定のバージョンでのみ使用できます。
以上が「shared_ptr」を値または参照で渡す必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。