問題タブ [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.
c++ - const_cast: アドレスは同じだが値が異なる?
C++ を初めて使用し、const_cast を学習している場合 — 以下のコードで本当に混乱します。
出力は
アドレス (&i と p、または &j と q) は同じなのに、値 (i と *p、または j と *q) が異なる理由を教えてください。Visual Studio 2013RC を使用しています。
c++ - const_cast を使用して const-ness を追加する - 悪い考えですか?
const_cast を使用してポインターの const-ness を削除することは避けるべきであることは誰もが知っていることです。
しかし、その逆はどうでしょうか。
私の使用例では、const 以外のソース バッファーからデータ (バイト) をコピーする関数があります。そのソース バッファーに従ってパラメーターを完全に const として宣言することは、適切な設計上の決定であると考えました。
以下のような関数呼び出しでは、ポインタ型エラー 'const char* const <-> char*' が発生します。
確かに、これで単純にsourcebuffer
as const を宣言できましたが、私の場合、別のコードの場所 (外部ライブラリ) からのものであるため、その変数にアクセスできません。
ただし、それを超えるコードは機能しますが、それは良いスタイルですか (私のユースケースによると)?
as constのパラメーターを宣言するcopyfunction
ことで、ユーザーはポインターまたはソースバッファー自体の場所を変更 (読み取り専用) しないことが保証されると思いました。したがって、この場合、 const_cast は、関数呼び出しを有効にするために必要な悪にすぎず、ポインターの const-ness を意図的に削除することはありません...
あいさつ
c++ - const_cast 右辺値を const ref にキャストする
static_cast では問題なく動作しますが、const_cast では右辺値 (一時変数など) を const 修飾参照にキャストできないことが不思議です。なぜこのように振る舞うかについて誰かが説明していますか?
「const_cast は悪」という議論には入らないでください。私がここでやろうとしていることは、const_cast と右辺値を扱う C++ 標準の部分を正しく理解することです。
c++ - 1 つの変数に 2 つの値 (const および const_cast) c++
タイプキャストがこれに影響を与えるのは何ですか? 値はどこに保存されますか?
c++ - const オブジェクトに dynamic_cast を使用できません
オブジェクト ポインターがパラメーターとして渡されるメソッドを作成し、メソッドBase
内で派生オブジェクト ポインターにキャストしたいと考えています。
ただし、動的キャストは const 指定子をキャストできないため、エラーが表示されます。const
しかし、ここで指定子を削除する必要がある理由を理解していません。私がしているのは、ベースポインターの後のオフセット量を指す派生ポインターを作成することだけです。も試しましたが、結果はありません。const Derived* const der = dynamic_cast<Derived*>(obj);
パラメータを として渡すことが重要const
です。これどうやってするの?const_cast
最初に申請してから申請するという醜い方法でそれを行う必要がありdynamic_cast
ますか? 何か良い方法はありますか?
c++ - const_cast - 単純な整数の constness を削除します。同じ記憶場所には異なる値があります
const_cast を使用して、整数の constness を削除しています。
出力:
同じメモリ位置に異なる値を保持する方法を誰かが親切に説明できますか?