ゲッタータイプのメソッドでは、どちらが最も良いのだろうと思っていますが、一方では参照で返すことでカプセル化を破るため、意見は異なります。最初にメンバーを変更可能にしようとすると、価値によって戻ってくるオーバーヘッドが大きくなります。このような状況では常に参考にして戻ってくることが最善ではないでしょうか?文脈に応じてコピーをしたいのかどうかを知りたいのですか?クラスの大規模データメンバーを参照または値で返します
答えて
私はconstリファレンスを返すことが最良の選択肢だと考えています。これにより、大量のデータをコピーするオーバーヘッドを避けることができますが、外部からの変更も許可されません。
今日は強制RVOがあります。 –
@πάνταῥεῖ:彼はデータメンバーを返しています。 –
私はconst参照を返すという考えを理解していますが、外部からメンバーを変更可能にする必要があるシナリオはどうですか? – navark
現代のコンパイラは、価値による戻り値を最適化し、コピー/移動オーバーヘッド[1] [2]をすべて削除することができます。だからあなたはそれについて心配する必要はありません。
参照をコピーするか、または参照を返すかを決定するには、クライアントではなくAPIデザイナーのルールである必要があります。このオブジェクトを変更可能かどうかを判断し、このクラスの使用例とその要件に従ってAPIを定義する必要があります。それは成就すべきです。
RVOについての私の理解は、メソッドのローカル変数を返すが、クラスメンバ変数は返さないということですか? – navark
ああ、あなたは正しい –
- 1. 大規模な参照データ
- 2. 大規模な参照テーブル用のmysqlの代替方法
- 3. 参照時の値を返すクラス
- 4. Google Earth EngineでPythonを使用して大規模なFeatureCollectionを参照する
- 5. セルの値/参照を返します
- 6. 大規模なシミュレーション、フロントエンドまたはバックエンド?
- 7. ロゴ - 小規模または大規模な仕事はありません
- 8. 大規模なクエリの照会
- 9. MATLABの大規模データを効率的に再編成または参照する
- 10. リファクタリングブラウザでSmalltalkで参照を解決するクラスの大規模な名前変更
- 11. 値または参照で返されますか?
- 12. Javascript関数は、デフォルトでオブジェクトを参照または値で返しますか?
- 13. 大規模システム用のEnterprise Architectクラス図
- 14. 小規模から大規模プロジェクトまで
- 15. 参照によってデータメンバーを渡す
- 16. 効率的に大規模な参照を検索する方法:: map
- 17. 中規模大規模プロジェクトの構造
- 18. 大規模なクエリを実行し、Oracleで行を返す
- 19. DateTime WHERE句を使用して大規模テーブルを照会します。
- 20. 大規模クエリでJava PostgreSQLエラーが発生しました。
- 21. Python:Chi大規模なデータセットのカテゴリ値を二等分した
- 22. 大規模プロジェクトのための角2またはNodeJs/Express
- 23. Loading \大規模なシリアライズされたオブジェクトを照会
- 24. 大規模な数値の分割(big.Int)
- 25. AsNoTrackingとCancellationTokenで大規模なDbSetを照会する方法
- 26. omniauth-twitterでTwitterから中規模または大規模のプロフィール画像を取得する
- 27. PHPは超大規模の画像ファイルを作成します
- 28. クラス、実装の提案のための大規模構成
- 29. RWCString - 値渡しまたはconst参照
- 30. このテクノロジは規模を拡大できますか?
IMO、常にconst参照又は引用により大きなオブジェクトを渡します。ポインターに対する参照を優先する。 –