問題タブ [pointer-conversion]

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 に答える
873 参照

c++ - C++ のポインター型の暗黙的な変換

このケースを考えてみましょう:

offsetが 32 ビット変数であるとします。ptrtype を持ちint*、ターゲット アーキテクチャは 64 ビット ( ptr8 バイト変数も同様) で、offsettype を持ちintます。式の値を計算するときにどのような変換が実行されます*(ptr + offset)か? 2003 C++ 標準のどこでそれについて読むことができますか?

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

c++ - ポインターを整数にキャストし、その整数をインクリメントしてキャストバックしても安全ですか?

有効なポインタがあるとしますp0:

次のように安全にラウンドトリップキャストできることを私は知っています:

しかし、次のことを行うのは安全ですか?

つまり、UBがないと確信できp1 == &a[1]ますか?

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

c++ - void * およびその他のポインター型を引数として取る C++ ポリモーフィズム関数: あいまいと見なされますか?

void *およびその他のポインター型を引数として取る C++ ポリモーフィズム関数: あいまいと見なされますか?

任意のポインターを にキャストできるため、以下のプログラムで期待される の代わりにvoid*以下の bar の 2 回目の呼び出しが実行されるのではないかと心配していますか?void bar(void*)void bar(int*)

g++ でテストしたところ、期待どおりに動作しました (つまり、int* は void* にキャストされません)。しかし、C++ 言語仕様に関して、この質問にコメント/回答できる人はいますか?

foo.h:

main.cpp:

さらに、たとえば、 第 1 形式として引数を取り、第 2 形式として基本抽象クラス ポインター引数をbar取る仮想ポリモーフィズム関数になりました。void*派生クラス ポインタを引数として呼び出した場合、第 1 形式と第 2 形式のどちらが実行されますか? つまり、派生クラス ポインターは、その基本抽象クラス ポインターにキャストされますか (したがって、2 番目のフォームが実行されます)、またはvoid *呼び出し前にキャストされます (したがって、1 番目のフォームが実行されます) bar()?