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

プログラミングの定数とは、プログラムの実行中に値が固定される定義です。たとえば、ほとんどの言語のリテラルは定数です。参照透過的なプログラミングスタイルでは、すべての定義は一定です。const修飾されたデータストレージ領域(オブジェクト、フィールド、変数、パラメーター)は「変更されない」ため、追加のコードジェネレーターの最適化とプログラムの正確さの追加の静的チェックが可能です。

7
パラメータの前のconstと関数名の後のconstc ++
このようなものの違いは何ですか friend Circle copy(const Circle &); そしてこのようなもの friend Circle copy(Circle&) const; 関数を使用して、この関数が呼び出されたオブジェクトを変更しようとしないことをコンパイラーに通知した後、constを知っていますが、他のオブジェクトはどうですか?

5
PHP-クラス内で定数を定義する
クラス内で定数を定義し、クラスコンテキストで呼び出されたときにのみ表示されるようにするにはどうすればよいですか? ....何かのようなもの Foo::app()->MYCONSTANT; (そしてMYCONSTANT無視されるように呼び出された場合)
88 php  class  constants 

6
ファイルスコープで可変的に変更された配列
「.m」ファイルの最上位にある次のようなものに似た、Objective-C実装ファイル全体で使用される定数静的配列を作成したいと思います。 static const int NUM_TYPES = 4; static int types[NUM_TYPES] = { 1, 2, 3, 4 }; NUM_TYPES後でファイルで使用する予定なので、変数に入れたいと思いました。 ただし、これを行うと、エラーが発生します 「ファイルスコープでさまざまに変更された「タイプ」」 これは、配列サイズが変数であることに関係している可能性があることを私は収集します(のように、整数リテラルをそこに置いても、このメッセージは表示されませんstatic int types[4])。 私はこれを修正したいのですが、多分私はそれをすべて間違って行っています...私はここに2つの目標があります: ファイル全体からアクセスできる配列を作成する NUM_TYPESファイル内のさまざまな場所に同じリテラルが散在しないように、変数にカプセル化する 助言がありますか? [編集]これはCのFAQで見つかりました:http://c-faq.com/ansi/constasconst.html


9
インクリメントステートメントを除いて、forループ変数をconstにする方法は?
標準のforループについて考えてみましょう。 for (int i = 0; i < 10; ++i) { // do something with i } ループのi本体で変数が変更されないようにしたいfor。 しかし、私は宣言できないiとしてconst、これは、インクリメントステートメント無効になりますよう。ようにする方法がありインクリメント文の変数の外には?iconst


9
パラメータを一定にすることはできますか?
Javaと同等のC#を探していfinalます。それは存在しますか? C#には次のようなものがありますか? public Foo(final int bar); 上記の例でbarは、は読み取り専用変数であり、によって変更することはできませんFoo()。C#でこれを行う方法はありますか? 例えば、多分私は働くことになり、長い方法持っているx、yとzいくつかのオブジェクトの座標(int型)を。関数がこれらの値を変更してデータが破損しないことを絶対に確認したいと思います。したがって、私はそれらを読み取り専用と宣言したいと思います。 public Foo(int x, int y, int z) { // do stuff x++; // oops. This corrupts the data. Can this be caught at compile time? // do more stuff, assuming x is still the original value. }

3
ECMAScript 2015:forループの定数
以下の2つの(またはどちらでもない/両方の)コードフラグメントのどちらが、完全なECMAScript2015実装で機能する必要がありますか。 for (const e of a) for (const i = 0; i < a.length; i += 1) 私の理解では、最初の例はe反復ごとに初期化されるため、機能するはずです。これiは、2番目のバージョンにも当てはまるはずではありませんか? 既存の実装(Babel、IE、Firefox、Chrome、ESLint)は一貫性がなくconst、2つのループバリアントのさまざまな動作を伴う、の完全な実装を持っているように見えるため、私は混乱しています。また、基準の具体的なポイントがわからないので、よろしくお願いします。

3
定数がすでに定義されているかどうかを確認します
これは単純なものだと思います。次の例で、定数がすでに定義されているかどうかを確認するにはどうすればよいですか? #this works var = var||1 puts var var = var||2 puts var #this doesn't CONST = CONST||1 puts CONST CONST = CONST||2 puts CONST => 1 1 uninitialized constant CONST (NameError)
82 ruby  constants 

4
`const auto`には何か意味がありますか?
質問は十分明確だと思います。ウィルautoキーワードのconstネスを自動検出、または常に例えばがあっても、非const型を返します。関数の2つのバージョン(1つは戻るものconst、もう1つは返さないもの)。 念のため、const auto end = some_container.end()forループの前に使用しますが、これが必要かどうか、または通常とは異なるかどうかはわかりませんauto。
82 c++  c++11  constants 

4
C ++ 11はvector <const T>を許可しますか?
コンテナの要件がC ++ 03からC ++ 11に変更されました。C ++ 03には包括的な要件(コピーの構成可能性やベクターの割り当て可能性など)がありましたが、C ++ 11では各コンテナー操作に関するきめ細かい要件が定義されています(セクション23.2)。 その結果、割り当てを必要としない特定の操作(構築およびpush_backそのような操作)のみを実行する限り、たとえば、コピー構築可能であるが割り当て不可能な型(constメンバーを持つ構造体など)をベクトルに格納できます。;でinsertはありません)。 私が疑問に思っているのは、これは標準が現在許可していることを意味するのvector&lt;const T&gt;でしょうか?const Tconstメンバーを持つ構造体のように、コピー構築可能であるが割り当て可能ではないタイプである必要がある理由はわかりませんが、何かを見逃している可能性があります。 (私が何かを見逃したかもしれないと思う理由の一部は、インスタンス化しようとするとgccトランクがクラッシュして燃えることですvector&lt;const T&gt;がvector&lt;T&gt;、Tにconstメンバーがある場合は問題ありません)。
82 c++  vector  c++11  constants 

6
#define vs const in Objective-C
私はObjective-Cconstを初めて使用しますが、前処理ディレクティブに関していくつか質問があり#defineます。 まず、を使用して定数の型を定義することはできないことがわかりました#define。何故ですか? 第二に、それらの1つを別のものよりも使用する利点はありますか? 最後に、どちらの方法がより効率的および/またはより安全ですか?

6
const char *とcharconst *-それらは同じですか?
私の理解では、const修飾子は右から左に読む必要があります。それから、私はそれを得る: const char* char要素を変更できないポインタですが、ポインタ自体は変更できます。 char const* mutablecharsへの定数ポインタです。 しかし、次のコードで次のエラーが発生します。 const char* x = new char[20]; x = new char[30]; //this works, as expected x[0] = 'a'; //gives an error as expected char const* y = new char[20]; y = new char[20]; //this works, although the pointer should be const (right?) y[0] …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.