(0)
がポインタの後に何を意味するのかを質問したい、つまりNode* ptr1(0)
。ポインタの後のかっこの意味
struct Node
{
string info;
Node * next
};
int main()
{
Node* ptr1 (0), *ptr2 (0),
ptr1 = new Node;
ptr2 = new Node;
}
(0)
がポインタの後に何を意味するのかを質問したい、つまりNode* ptr1(0)
。ポインタの後のかっこの意味
struct Node
{
string info;
Node * next
};
int main()
{
Node* ptr1 (0), *ptr2 (0),
ptr1 = new Node;
ptr2 = new Node;
}
:
T obj(0);
T obj = 0;
0
はnullポインタ定数ですので、ここでは2つのポインタをnullに初期化しています。
あり、オブジェクトを初期化する方法はたくさんありますが、あなたはクラス型のオブジェクトを宣言する方法を検討:
MyClass obj(someArguments...);
それは同じことです。
これはdirect initializationです。
Tは、非クラス型である場合、必要に応じて、標準的な変換がポインタ型の場合T.
のCV-未修飾バージョンに他の値を変換するために、使用されているが、それを初期化します0を指定するとNULLポインタになります。 Pointer conversionsを参照してください。
NULLポインタ定数(NULLを参照)は、任意のポインタ型に変換することができ、結果はその型のNULLポインタ値です。
これはコンストラクタ呼び出しです。コンパイラにはコンストラクタが定義されていないので、コンパイラはそれを提供します。 C++ 11以降では、優先形式は 'Node * ptr1 {0};'中括弧を使用します。
コンパイラが提供するポインタ用のコンストラクタはありません。 –
ありがとうございます、 'Node * ptr1 {nullptr};'さらに良いでしょう。 – Gregg
これは単にポインタを初期化します。それをnullに初期化しています。
ポインタが '0'または' NULL'で初期化するのではなく、C++ 11の代わりに 'nullptr'を使うべきです。 – ArchbishopOfBanterbury