[解決済み] const値で返す目的?重複
2022-04-28 11:33:59
質問
これのconstは何のためにあるのでしょうか?
const Object myFunc(){
return myObject;
}
私はちょうど Effective C++ を読み始めたところで、項目3がこれを提唱しており、Google で検索すると同様の提案と反例がヒットします。ここでconstを使うのが望ましいとは到底思えません。値で返すことが望ましいと仮定して、返された値を保護する理由が見当たりません。なぜこれが役に立つかの例として、返り値の意図しないブールキャストを防ぐことが挙げられています。実際の問題は、暗黙のブールキャストは明示的なキーワードで防ぐべきということです。
ここでconstを使用すると、一時的なオブジェクトを代入せずに使用することができなくなります。だから、そのオブジェクトを使って演算式を実行することができなかった。無名constが便利なケースはなさそうですね。
ここでconstを使うことで何が得られるのか、どのような場合にそれが望ましいのか。
編集:算術の例を、代入の前に実行したいような、オブジェクトを修正するあらゆる関数に変更します。
どのように解決するの?
オブジェクトに対して高価な非定数演算を行う可能性がある場合、const値で返すことで、誤ってテンポラリに対してこの演算を呼び出すことを防ぐことができます。例えば
+
はconst値でない値を返し、あなたはこう書くことができます。
(a + b).expensive();
しかし、C++11の時代には、値をnon-constで返すことを強く推奨します。そうすれば、rvalue参照を最大限に活用することができ、rvalueが一定でない場合にのみ意味を持ちます。
まとめると は この慣習には根拠がありますが、本質的には時代遅れです。
関連
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] std::string を const char* または char* に変換する方法
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] Static readonly」対「const」。
-
[解決済み] constexpr` と `const` の相違点
-
[解決済み] 関数のパラメータに 'const' を使用する
-
[解決済み】"static const" vs "#define" vs "enum"
-
[解決済み】PHP|define() vs. const.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】'std::cout'への未定義の参照
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された