我想问一下(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