2017-05-10 17 views
2

ポインタがあるとします:int *pointerポインタのNULL可能性をチェックする:!pointerまたはpointer == nullptr?

私はそのNULL値の許容をテストしたい場合は、私がそれを行う必要があります。

bool nullability = !pointer; 

かと:

bool nullability = (pointer == nullptr); 

は同等の両方の式はありますか? そうでない場合は、なぜ、どのような副作用ですか?

+1

はいくつかのアイデアは、ここを参照してくださいしているhttp://stackoverflow.com/a/17774781/133203 –

答えて

4

nullptrはブール値に変換されたときにfalseに変換されることが保証されているため、どちらも等価です。 N4296から

4.12ブール変換
メンバー型に算術、スコープ外の列挙、ポインタ、またはポインタのprvalue
はbool型のprvalueに を変換することができます。ゼロ値、ヌルポインタ値 またはヌルメンバポインタ値はfalseに変換されます。その他の値は がtrueに変換されます。直接初期化(8.5)の場合、 std :: nullptr_tのPR値をbool型のprvalueに変換できます。 結果の値はfalseです。

関連する問題