我想問一下(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
,下面的兩個聲明實際上等效:
T obj(0);
T obj = 0;
而且由於0
是一個空指針常量,所以你在這裏做的是初始化你的兩個指針爲null。
有很多方法來初始化對象,但考慮如何聲明類的對象:
MyClass obj(someArguments...);
這是同樣的事情。
如果T是一種非類型,標準轉化被使用,如果必要的話,對其它的值轉換爲T.
的CV-不合格版本對於指針類型,初始化用0表示它爲空指針。見Pointer conversions。
空指針常量(請參見NULL)可以轉換爲任何指針類型,並且結果是該類型的空指針值。
這是一個構造函數調用。由於沒有定義構造函數,因此編譯器提供了一個。 在C++ 11之後,首選的形式是'Node * ptr1 {0};'使用括號。
指針沒有構造函數,編譯器提供的或其他的。 –
謝謝,'Node * ptr1 {nullptr};'會更好。 – Gregg
這只是初始化指針。它將它初始化爲空。
應該注意的是,不應該用'0'或'NULL'來初始化指針,而應該使用'nullptr'來代替C++ 11. – ArchbishopOfBanterbury