例えば:
object* pObject = nullptr;
また:
object* pObject = 0;
繰り返しますが、パフォーマンスに関してはどちらが優れていますか?
例えば:
object* pObject = nullptr;
また:
object* pObject = 0;
繰り返しますが、パフォーマンスに関してはどちらが優れていますか?
nullptr
型std::nullptr_t
であるため、コンストラクターはオーバーロードされます。これは、null であるという事実が型にエンコードされていることを意味するため、条件を回避することで理論的には高速になる可能性があります。
ポインターには明らかにオーバーロードされたコンストラクターがないため、使用するかどうか0
はnullptr
関係ありません。同じマシンコード、同じパフォーマンス。
とにかく、nullptr
null ポインターが必要な場合に使用します。0
ポインタではなく整数オーバーロードを呼び出すので注意してください。
それらはまったく同じです。リテラル0
を使用してポインターを初期化できるという事実は、純粋に言語構文の一部であり、コンパイラーによって処理されます。結果はnullptr
、ポインターを初期化するために使用する場合と同じです。null ポインターが得られます。
nullptr
型システムの一部であり、生成されたマシン コードとは何の関係もありません。(以前は存在しなかったポインタ型のリテラルが存在するように存在します。)
std::string を参照していると思います。
また、入力するつもりだったと思いますstring* mystr = 0;
。ポインターでない場合は、null にすることはできません。
それらはほぼ確実にまったく同じものにコンパイルされ、好きなものを使用します。
編集を にするとobject*
、私の答えは同じです。2つはほぼ確実に同じものにコンパイルされるので、好きなものを使用してください。