[解決済み] コンストコレクトネスを売り込む
質問
では、なぜ const を頻繁に使うことが推奨されるのでしょうか? C++ではconstの使用は役に立つというより、むしろ苦痛になるような気がするのですが。 しかし、私はpythonの観点から、何かを変更されたくなければ、それを変更しないでください、と言っています。 ということで、いくつか質問させてください。
-
何かをconstにするたびにエラーが発生し、どこかの他の関数もconstに変更しなければならないような気がします。 そして、そのために 別の 関数があります。 これは、経験を積めば簡単になることなのでしょうか?
-
constを使用するメリットはありますか? 本当に その面倒さを補うほどか? オブジェクトを変更するつもりがないのなら、変更しないコードを書かないようにすればいいのでは?
現時点では、パフォーマンスへの影響も考慮した上で、正確性と保守性の観点からconstを使用することの利点に最も注目していることを記しておきます。
どのように解決するのか?
これは、quot;const correctness"に関する決定的な記事です。 https://isocpp.org/wiki/faq/const-correctness .
一言で言えば、constを使うのは良い習慣です。
- 意図していない変数を誤って変更することを防げる。
- 偶発的な変数の代入から保護します。
-
コンパイラが最適化できる。 例えば、次のようなことから保護されます。
if( x = y ) // whoops, meant if( x == y )
同時に、コンパイラは変数/関数の状態を常に正確に把握できるため、より効率的なコードを生成することができます。 タイトなC++のコードを書くなら、これは良いことです。
コンストラスト・コレクトネスを一貫して使用するのが難しいというのはその通りですが、最終的なコードはより簡潔で、より安全にプログラミングできるようになります。 C++の開発をたくさんしていると、このメリットはすぐに現れます。
関連
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】クラステンプレートの引数リストがない
-
[解決済み】'cout'は型名ではない
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み] std::string を const char* または char* に変換する方法
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
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++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] C++ "const "キーワードのポイントは何ですか?重複