次のような場合に実行したい:
if(x has not been initialized)
{...
}
これは可能ですか?ありがとう
「変数の内容が未定義であるかどうかをチェックする方法はありません。できる最善の方法は、シグナル/センチネル値を(たとえばコンストラクターで)割り当てて、さらに初期化を実行する必要があることを示すことです。 ."
ここから
その動作を実装するには、ポインターを使用できます。デフォルトは 0 に開始されます。
例えば:
int *number = 0;
// ...
if (!number) {
// do something
}
整数だけでなく、任意の型でそのトリックを使用できます。
Cat *kitty = 0;
// ...
if (!kitty) {
// do something
}
a) For primitive datatypes such as int, float its not possible to know if its initialized or not.
b) For pointers you can check if its not nullptr or not
if(ptr != nullptr)
{
}
c) For custom class you need to introduce bool member which can be set to true in constructor so that we can use it to check if object is initialized or not.
if(obj.isInitialized())
{
}
そのようなものは、ポインターに対して機能します。言う:
int* x = NULL; //initialize
if(x == NULL)
{
//dostuff
}
または単に
if(!x)
{
//dostuff
}
ただし、通常のintだけの方法があるかどうかはわかりません
編集:考えてみると、ルシアンは正しいです。それは未定義の動作になります。残りが言ったように、既知の値に初期化する必要があります。