"const"が大好きです。私は "変わってはいけない"あらゆる変数とメソッドが "const"であることを望みます。問題は、変数またはメソッドが "constであるべき"かどうかは、コールツリーのさらに下にあるメソッド/変数に依存するということです。静的にコードの本体を調べ、 "ボトムアップエンコンプライアンス"を実行するためのツールやプロセスがありますか?C++変数をconstにする
5
A
答えて
6
私はあなたの質問への答えを知らないが、私は
変数やメソッドが「constのあるべき」かどうかは、さらに下のメソッド/変数に依存していることを主張に反論したいと思いますコールツリー
実際には、constは論理レベルにある必要があります。私。論理的に変更してはならない場合は、何かにマークを付けるべきです。後であれば、コンパイルエラーが発生し、変更の前提や初期の前提を再考する必要があります。
ルールは次のとおりです。
何かがconstのであれば、何かが事実上の変更されていない場合、それは、その後のは、それを作ってみましょう、
ではなく
を変更すべきではありませんconst
0
さまざまな静的それを可能にするアナライザツールです。 Gimpel Flexelintが気になります。
これまで言われていたことは、正しい結果を得られない可能性があることです。たとえば、次のように指定します。
class Wibble {
Some_Implementation_Detail *stuff; //PIMPL idiom
public:
void set_something(int a) { stuff->set(a); }
};
次に、set_somethingをconst
にすることができます。これは技術的には正解ですが、この場合は論理的にconst
ではないため、あまり役に立ちません。
関連する問題
- 1. Constオブジェクト、Constメンバー関数、およびC++での可変変数
- 2. const式へのC++変数
- 3. constの値を変更するC/C++
- 4. Operator = C++のConst変数でオーバーロード
- 5. C++のテンプレートテンプレートクラスのstatic constメンバ変数
- 6. C++でTからconst Tに変換する関数
- 7. 変数をconstに変換します
- 8. クラスにconst変数を指定する
- 9. C#const名に一致する変数を使用してconstを呼び出します。
- 10. C++ - const vs非constメンバ関数 - 関数ポインタを持つテンプレート
- 11. C++プログラミングのconst wchart_tへのconstのchar *に変換*
- 12. C/C++静的constローカル変数の目的
- 13. C++ const内のconst
- 14. Cのtypedef constの引数
- 15. C++のconstメンバ関数
- 16. 静的const変数をマクロ
- 17. Objective-Cのconstインスタンス変数の代わりに?
- 18. C++を返す関数のconstのchar *
- 19. C++ MFC不足しているのconstのchar *変数
- 20. 可変関数を変更する限り、const関数をC++で再帰的に使用できますか?
- 21. constをconstに変換する文字列を定義する
- 22. C++テンプレート型減算:Tをconstに変換する方法T
- 23. C - return変数をconstとして設定
- 24. Cでconst変数を持つ配列サイズ
- 25. constベクトルに変換する
- 26. 関数内のC++ const引数
- 27. constメンバ変数へのポインタ
- 28. 関数の変更constオブジェクト
- 29. const変数と非const変数を操作するoperator/overload関数の宣言方法は?
- 30. なぜローカルconst変数をポインタキャストで変更できますか?Cでグローバルconst変数を変更できないのはなぜですか?
'const'を取る' const'メンバ関数/関数しか使わなかったので、単に 'const'を作成するべきではありません。概念的には変更してはならないことを知っているので、 'const'にする必要があります。 – BoBTFish