タグ付けされた質問 「const」

9
ブール値をクリアして呼び出しを行うにはどうすればよいですか?ブールトラップ
@ benjamin-gruenbaumのコメントで指摘されているように、これはブールトラップと呼ばれます。 このような機能があるとしましょう UpdateRow(var item, bool externalCall); 私のコントローラーでは、その値externalCallは常にTRUEです。この関数を呼び出す最良の方法は何ですか?私は通常書く UpdateRow(item, true); しかし、「真の」値が何を意味するのかを示すために、ブール値を宣言する必要がありますか?関数の宣言を見ることでそれを知ることができますが、次のようなものを見た場合は明らかに速く、明確です bool externalCall = true; UpdateRow(item, externalCall); PD:この質問が本当にここに当てはまるかどうかはわかりませんが、当てはまらない場合は、どこでこれに関する情報を入手できますか? PD2:非常に一般的な問題だと思ったため、言語にタグを付けませんでした。とにかく、私はc#で作業し、受け入れられた答えはc#で動作します
76 boolean  const 

4
Cで変数にconstキーワードを使用するタイミングと目的は何ですか?
取得中に私のコードはここに見直さ使用しての問題constのキーワードを思い付きました。変数の読み取り専用動作を実装するために使用されることを理解しています。 私は、さまざまな状況が役に立つときに混乱する。 関数のプロトタイプを明確にするために使用すべきですか? コード開発中のセキュリティ対策として使用する必要がありますか? 実行時定数を宣言するために、さまざまな関数のスコープで使用する必要がありますか? それはまったく使用されるべきですか? これらの質問は、私が直面している混乱のほんの一例です。一般的な混乱は ときにする必要がありますconstCプログラミングで使用するキーワード? Cでこのキーワードを使用することで得られるさまざまなタイプの利点は何ですか? constキーワードを使用することの短所はありますか? 私の質問の詳細にあるこれらすべての質問のために、この質問は広すぎるかもしれないと指摘されています。これらの質問は、主な質問に関する混乱を明確にするためだけのものであることを明確にしたかっただけです。 Cで変数にconstキーワードを使用するタイミングと目的は何ですか? 言い換えることもできます const同じ長所と短所を備えたC` でのキーワードの適切な使用。

7
定数の値は時間とともに変化しますか?
開発段階では、同じ実行で修正する必要がある特定の変数がありますが、時間をかけて修正する必要がある場合があります。たとえば、booleanデバッグモードを通知するには、通常は実行しないプログラムで処理を行います。 これらの値を定数、つまりfinal static int CONSTANT = 0Java に含めるのは悪いスタイルですか?実行中は定数が同じままであることを知っていますが、もちろん、計画外の変更を除いて、開発全体で同じであると想定されていますか? 同様の質問を検索しましたが、私の質問に完全に一致するものは見つかりませんでした。
28 const  constants 

7
不変とconstの違い
私はよく用語immutableを見て、const同じ意味で使用しました。ただし、私の(小さな)経験から、この2つは、コードで作成する「契約」が大きく異なります。 Immutableは、このオブジェクトがまったく変更されないという契約を作成します(Pythonタプル、Java文字列など)。 Constは、この変数のスコープ内では変更されないという契約を結んでいます(この期間中にC / C ++キーワードなどが指し示すオブジェクトに対して他のスレッドが何をするかについての約束はありません)。 明らかに、言語がシングルスレッド(PHP)であるか、線形または一意のタイピングシステム(Clean、Mercury、ATS)を持たない限り、2つは同等ではありません。 最初に、これら2つの概念の理解は正しいですか? 第二に、違いがある場合、なぜそれらはほとんど排他的に交換可能に使用されるのですか?

6
読みやすさは(参照)パラメーターでconstを使用しない正当な理由ですか?
いくつかの関数を作成するときに、次のようなパラメーターにconstキーワードが見つかりました。 void MyClass::myFunction(const MyObject& obj,const string& s1,const string& s2,const string& s3){ } IDEまたはvimで行を2行に分割することがよくあるので、パラメーターのすべてのconstキーワードを削除したいと思います。 void MyClass::myFunction(MyObject& obj,string& s1,string& s2,string& s3){ } それはconstを使用しない正当な理由ですか?パラメータオブジェクトを手動で変更しないで維持することはできますか?

4
C ++のようなconstを言語に組み込む際の問題は何ですか?
私はC ++のようなconst特定の実行ではなく(キャストアウトのようなconst)のアイデアに興味があります。 たとえば、C#を考えてみましょう。C++のようなconstがなく、その理由は通常の人と時間です。さらに、C#チームはC ++の実行を見て、constCLRをマーケティングし、この時点で十分でした(c#およびconstパラメーターにconstメンバーメソッドがない理由を参照してください;ありがとうSvick)。ことがあれば、我々はさらにそれよりも移動し、何かありますか? もっと深いものはありますか?例えば、多重継承を考えてみてください-通常、(ユーザーにとって)把握するのは難しいと見られているため、言語に追加されません(ダイヤモンドの問題のように)。 言語にそれを避ける方が良いという問題を引き起こす自然の何かがありconstますか?const深さを浅くするか浅くするかを決定するようなものです(constコンテナがあるため、新しい要素を追加したり、既存の要素を変更したりできません。要素が参照型の場合はどうなりますか)。 更新:私はC#について言及しているため、歴史的な観点constから、言語の潜在的な問題の性質に興味があります。 これは言語の挑戦ではありません。現在の傾向や人気などの要因を無視してください-私は技術的な問題にのみ興味があります-ありがとうございます。

6
定数としてゼロ?
最近、このプログラミングのイディオムに出会いました。 const float Zero = 0.0; これは比較で使用されます: if (x > Zero) {..} これが実際よりも効率的であるか、読み取り可能または保守可能であるかを誰でも説明できますか? if (x > 0.0) {..} 注:この定数を定義する他の理由を考えることができますが、このコンテキストでの使用について疑問に思っています。

2
Const C ++ DRY戦略
非自明なC ++ const関連の重複を避けるために、const_castは機能するが、非constを返すプライベートconst関数は機能しない場合がありますか? Scott MeyersのEffective C ++ item 3では、const_castと静的キャストを組み合わせることで、コードの重複を避けるための効果的で安全な方法を提案しています。 const void* Bar::bar(int i) const { ... return variableResultingFromNonTrivialDotDotDotCode; } void* Bar::bar(int i) { return const_cast<void*>(static_cast<const Bar*>(this)->bar(i)); } マイヤーズは、const関数にnon-const関数を呼び出すことは危険であると説明しています。 以下のコードは反例を示しています。 マイヤーズの提案に反して、静的キャストと組み合わせたconst_castは危険な場合があります 時々const関数がnon-constを呼び出すことはそれほど危険ではありません const_castを使用して両方の方法で潜在的に有用なコンパイラエラーを隠すことがあります。 const_castを避け、const以外のメンバーを返すconst constメンバーを追加することも別のオプションです コードの重複を回避するconst_cast戦略のいずれかが適切なプラクティスと見なされていますか?代わりにプライベートメソッド戦略を好むでしょうか?const_castは機能するが、プライベートメソッドは機能しない場合がありますか?複製以外に他のオプションはありますか? const_cast戦略に関する私の懸念は、コードが記述されたときに正しい場合でも、メンテナンス中にコードが不正確になり、const_castが有用なコンパイラエラーを隠す可能性があることです。一般的なプライベート関数の方が一般に安全なようです。 class Foo { public: Foo(const LongLived& constLongLived, LongLived& mutableLongLived) : mConstLongLived(constLongLived), mMutableLongLived(mutableLongLived) {} // …
14 c++  dry  const 

3
Objective Cでプログラミングするとき、人々はconstを多く使用しますか?
関連:「 'NSString *'型のパラメーターに 'const NSString *'を送信すると、修飾子が破棄されます」という警告 時々、私はそれが便利だと思います。テーブルを渡す必要があり、テーブルの内容が変わらないことを確認したい場合があります。 しかし、ほとんどのObjective-Cプログラムのサンプルでは、​​私は決して見ませんconst。私の質問はなぜですか?

4
C / C ++では、可能であればパラメーターとローカル変数で 'const'を使用する必要がありますか?
この質問は、Java に関する質問にfinal触発されたものです。 C / C ++では、const可能な限り使用する必要がありますか? パラメータでの使用constに関して、関連する質問が既にあることは知っています。残念ながら、その質問とその回答は関数のパラメーターに関するものだけなので、私の質問には完全には答えませんが、他のケース(たとえば、ローカル変数)についても知りたいです。 また、その質問に対するほとんどすべての回答constは、変数のアクセス可能性に関する有用な情報が含まれているため、使用する必要があると述べています。しかし、これはJavaでfinalを使用することに関する回答と矛盾するようです。このfinal情報は、余分な情報が含まれていない場合は不必要であり、コードを短く簡潔にするために省略する必要があると述べています。 それで、const可能な限り使用すべきですか?もしそうなら、なぜconstC ++でのアドバイスfinalがJavaでのアドバイスと異なるのですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.