問題タブ [static-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 投票する
1 に答える
2347 参照

c++ - reinterpret_castおよびnullメンバー変数

私は次のようなreinterpret_castを使用しています:

メソッド内では、ほとんどのメンバー変数(すべてのハンドル)がnullです。同じアドレスが保証されないことがわかっているので、これはreinterpret_castが原因でしょうか?static_castのように。この場合はstatic_caseを使用する必要があることはわかっていますが、この問題に興味を持ったのです。

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

c++ - 列挙型のreinterpret_castエラー

そのようなキャストにreinterpret_cast演算子を使用できないのはなぜですか?

0 投票する
5 に答える
522 参照

c++ - static_castに関する質問

私はコードを書きましたが、その出力と混同しています。

出力は次のとおりです。

しかし、私が知る限り、pbタイプBを指しています。それに名前の付いた関数はありませdisp()んか?では、なぜdisp()クラスDの関数にアクセスできるのでしょうか。

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

c++ - 通常のキャストは実行時エラーをスローしません

以下のコードを見ると、fun 関数は C のオブジェクトを B のオブジェクトに変換し、B 自身の関数を呼び出します。それはどのようにセグメント障害を与えませんか。これはクラッシュにつながると思います。私のプログラムはクラッシュしていません。なぜそれがうまく機能しているのか誰でも説明できますか?

0 投票する
4 に答える
4558 参照

c++ - static_castおよびRTTIとdynamic_cast

以下のコードを遵守してください。私の知る限り、dynamic_castはstatic_castよりも遅いです。実行時に型を評価するためです。ここでの私の疑問は、以下のようにtypeid()でstatic_castを使用する場合、動的キャストと同じ時間がかかるでしょうか?? dynamic_castよりも高速ですか?

RTTIを使用した静的キャスト:

ダイナミックキャスト:

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

c++ - 1つのXalanクラスからその基本クラスへのstatic_castを使用できないのはなぜですか?

コンパイラ(g ++)がこのコード行について文句を言うのはなぜですか?

コンパイラから得られるエラーは次のとおりです。

static_castがない場合、コンパイラは次のように出力します。

XalanElementクラスは次のように定義されます。

ドキュメントには、XalanNodeがXalanElementから派生する必要があることも示されています。これは、 XalanElementクラスリファレンスを参照してください。

XalanDocument.hpp内では、getDocumentElement()のメソッドシグネチャは次のとおりです。

0 投票する
4 に答える
1413 参照

c++ - 仮想関数と static_cast

次のコードのような状況で、ポリモーフィック クラスで static_cast を使用した後、仮想関数を安全に呼び出すことができますか、それとも UB ですか?

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

c++ - static_cast の違いは何ですか(var) と *(int*)&var?

わかりましたので、これをやってみました

xケース 2 では、 の最初のバイトが整数であると考えるように再解釈され、ビット パターンがコピーされbてガベージが生成され、ケース 1 では値が からcharに変換されることがわかりましたint

それとは別に、これら2つの間に違いはありますか?

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

c++ - C++ の危険なキャスト コード

これは危険なコードだと確信しています。しかし、正確に何がうまくいかないのかを誰かが知っているかどうかを確認したかった.

次のクラス構造があるとします。

そして、次のようにクラスを自動的に拡張する方法が必要だとします。

私ができる本当に重要な保証の 1 つは、他のメンバー変数やメソッドを持たBaseないことです。Testそれらは本質的に空のクラスです。

(潜在的に) 危険なコードは次のとおりです。

このようなことを行う理由は、私が Test に似たクラスを使用していることですが、現在それを機能させるには、渡されたインスタンスをコピーするとともに、新しいインスタンス T (つまり Test) を作成する必要があります。Test を T のメモリ アドレスに向けることができれば、非常に便利です。

Base が仮想デストラクタを追加せず、Test によって何も追加されない場合、このコードは実際には問題ないと思います。しかし、仮想デストラクタを追加すると、型情報がクラスに追加されるのではないかと心配になります。その場合、メモリ アクセス違反が発生する可能性があります。

最後に、このコードは私のコンピューター/コンパイラー (clang) で正常に動作すると言えますが、これはもちろん、メモリに悪いことをしていないこと、および/または別のコンパイラー/マシンで完全に失敗しないことを保証するものではありません。

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

c++ - クラス メソッドをラップするためのコールバック関数と static_cast