1. ホーム
  2. c++

[解決済み] int* ptr = int()」という値の初期化はなぜ不正にならないのか?

2023-05-04 01:01:01

質問

次のコード(抜粋 ここから ):

int* ptr = int();

は Visual C++ でコンパイルされ、ポインタを値で初期化します。

どうしてそんなことが可能なのでしょうか?つまり int() は型のオブジェクトを生成します。 int という型のオブジェクトを生成し int をポインタに代入することはできません。

上記のコードはどのように違法ではないのでしょうか?

どのように解決するのですか?

int() は値 0 の定数式なので、ヌルポインタの定数を生成する方法としては有効です。結局のところ、これは単に int *ptr = NULL;