問題タブ [const-cast]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2147 参照

c++ - const_cast を使用して定数変数を変更できますか?

出力は次のとおりです。

*piaiaアドレスは同じですが、値が異なります。私の目的はconst_cast、定数値を変更するために使用することですが、結果として機能しないことが示されています。

誰かが理由を知っていますか?

0 投票する
1 に答える
236 参照

c++ - ポインター (T*) を 2 つの定数 (T const * const) ポインターにキャストまたは変換する

C++

まだ2ポインターではないconstポインター(例:T const * const)を暗黙的または明示的にキャストしたり、何か(関数など)を介して処理したり、そうでなければ変換したりしてT const * const、初期化に使用することなく、または使用する前にを生成できるかどうかを知りたいとして宣言されている変数T const * const。これどうやってするの?

T*から始めれば、1 つconst_cast(キャストが一度に 1 つしかキャストできない場合は 2 つ) で十分だと思いましたconstが、明らかにそうではありません。T const * constコード内の多くの変数は、キャストまたは関数からの戻りによる別の失敗した試みを示しています。すべてのキャストで、末尾にconst. (constの左側を*先頭const、 の右側を*末尾と呼びconstます。) キャストが失敗したため、constスルー直接初期化を強制しようとして失敗しました。これは でコンパイルされましたVC11stack-crooked.com の g++は、論理的に同等のコンソール出力を提供しますが、名前は異なりますtypeid(/*...*/).name().

期待される結果と実際の結果、および質問:

質問番号は、同じ番号のa#変数に対応しています。

  1. 期待通りの結果が得られましたint *
  2. 期待通りの結果が得られましたint const *
  3. 期待さint* constれていましたが、得られましたint*。はconst_castその末尾のconst引数を無視しましたか?その理由は? 戻り値は引数と同じ定数と型であるため、キャストは実行されましたか?
  4. 期待さint const * constれていましたが、得られましたint const*。はconst_castその末尾のconst引数を無視しましたか?その理由は?
  5. 引数の先頭const_cast<int const * const>に既に. 予想される。を得た。はその末尾の引数を無視しましたか?その理由は?consta4constint const * constint const*const_castconst
  6. 予想されるint const * const。を得int const*た。明示的なキャストが引き続き末尾を除外するのはなぜconstですか?
  7. 予想されるint const * const。を得int const*た。static_cast末尾の を除外するのはなぜconstですか?
  8. 予想されるint const * const。を得int const*た。reinterpret_cast末尾の を除外するのはなぜconstですか?
  9. 予想されるint const * const。を得int const*た。関数の戻り値を初期化しても、結果int const * constの末尾が除外されるのはなぜですか?const
  10. 予想されるint const * const。デバッガーint const*からではなく、コンソール出力から取得しました。a10として明示的に宣言されてint const * constいるのに、なぜtypeid().name()末尾の const を除外するのでしょうか? operator==では1、なぜtypeid()それ自体 (名前だけでなく) が のa10それと同等なのa4ですか? VC11 デバッガーはa10、 のタイプを としてリストしますint const * consttypeid()なぜ と のものと違うのtypeid().name()ですか? どちらが正しいですか?
  11. 変数名a11は「all」に似ているので省略。
  12. 明示的に宣言された に初期化されているため、そうであると予想a12していました。 譲りますので、まだまだです。コンソール出力とデバッガーの両方から取得しました。期待される結果と異なるのはなぜですか?int const * consta10int const * constoperator==1typeid()int const*int const*

すべてのキャスト、関数の戻り値、および初期化は、一度に 1 つのキャストのみに制限さconstれていますか? const彼らがキャストできるのはリーディングだけですか?

0 投票する
2 に答える
67650 参照

c++ - const_cast の使い方

Studentクラスに次のように定義されたプライベート変数があります。

のコピーコンストラクターを作成しようとしていますStudentが、これを行うには constness をキャストする必要があります。残念ながら使い方がわかりませんstd::const_cast

これは、コピーコンストラクターでやろうとしていることです:

それは機能しません...構文がわかりません。

0 投票する
2 に答える
3249 参照

c++ - 「ポインタ型へのポインタ」をconstに変換するには?

次のコードで

私はこれを得る:

理由がわかりません。testにサイレントキャストできないのはなぜconst double**ですか? なぜ明示的に行う必要があるのですか?そんなこと知ってる

私のコードは正しくなりますが、これは不要だと思います。

私が見逃しているconstに関するいくつかの重要な概念はありますか?

0 投票する
3 に答える
229 参照

c++ - const_cast テンプレート パラメータに & が存在することは何を意味しますか

私は次の例を調べていました

&そして、上記のテンプレートパラメータータイプが何を意味するのか、なぜそれがないと機能しないの&かを知りたかったのです。

アップデート:

私の質問を言い換えさせてください。私はその参照を理解していますが、それはどの変数を参照していますか? たとえば、ここでは、ポインターの場合、元の (キャストされていない) ポインターを参照すると述べています。非ポインター型の場合に何を参照するのbか、参照として宣言されていないときにどのように参照できるのかを知りたいですか?

0 投票する
3 に答える
789 参照

c++ - C++ での const_cast の動作

これが私の問題です、問題はコメントにあります

誰がその理由を教えてくれますか? また、これらの問題を説明する書籍もありますか? ありがとう!

0 投票する
1 に答える
42474 参照

c++ - const char* を QString に変換します

タイプの関数の出力を使用するconst char*必要があり、それを に変換する必要がありQStringます。

注: その関数内では、これらは、const char*

はどこ_fooですかstd::string

次のコード行を使用しようとしましたが、常に空の文字列になります (実際には空ではありませんが、改行文字のみが含まれ、他のすべての文字は無視されます)。