さらに私のコードでは、オブジェクトが null/空かどうかを確認します。
オブジェクトを null に設定する方法はありますか?
さらに私のコードでは、オブジェクトが null/空かどうかを確認します。
オブジェクトを null に設定する方法はありますか?
クラスのオブジェクトを NULL に設定することはできません。ただし、ポインタ (オブジェクトのメモリ アドレスを含む) を NULL に設定することはできます。
あなたが求めていることができないことの例:
Cat c;
c = NULL;//Compiling error
できることの例:
Cat c;
//Set p to hold the memory address of the object c
Cat *p = &c;
//Set p to hold NULL
p = NULL;
への任意のポインターを設定できますがNULL
、NULL
C++ では単に 0 として定義されています。
myObject *foo = NULL;
NULL
また、標準ヘッダーを含める場合は が定義されていますが、言語自体には組み込まれていないことに注意してください。が定義されていない場合NULL
は、代わりに 0 を使用するか、次を含めることができます。
#ifndef NULL
#define NULL 0
#endif
余談ですが、ポインタではなくオブジェクトを に本当に設定したい場合は、 Null Object PatternNULL
について読むことができます。
オブジェクトが NULL/空かどうかを確認したい。NULL であることと空であることは同じではありません。Justin と Brian が既に述べたように、C++ では NULL は通常ポインターに関連付ける代入です。おそらく operator= をオーバーロードできますが、実際にこれを行う場合はよく考えてください。他のいくつかのこと:
bool IsEmpty()
オブジェクトの変数がデフォルトの状態にリセットされた場合に true を返すメソッドを用意しないのはなぜですか? NULL の使用をバイパスする可能性があると思います。A* p = new A; ... p = NULL;
コードがガベージコレクションされることを保証できない限り、次のようなものを持つことは悪いことです (no delete p)。どちらかといえば、これはメモリリークにつながり、そのようなリークがいくつかあると、コードが遅くなる可能性が高くなります.class Null {}; Null _NULL;
これを行ってから、状況に応じて他のクラスの operator= および operator!= をオーバーロードすることをお勧めします。おそらく、オプション 4 をより適切に使用できるように、コンテキストに関する詳細を投稿する必要があります。
アルパン