我想问一下(0)
在指针即Node* ptr1(0)
之后的意思。
struct Node
{
string info;
Node * next
};
int main()
{
Node* ptr1 (0), *ptr2 (0),
ptr1 = new Node;
ptr2 = new Node;
}
答案 0 :(得分:3)
表示用0或 null 初始化指针。
请参阅this问题,了解其背后的解释(它们实际上相同;在此上下文中为0
和null
答案 1 :(得分:1)
对于任何整数类型T
,以下两个声明实际上是等效的:
T obj(0);
T obj = 0;
由于0
是一个空指针常量,所以你在这里所做的就是将你的两个指针初始化为null。
有很多方法可以初始化对象,但请考虑如何声明类类型的对象:
MyClass obj(someArguments...);
这是一回事。
答案 2 :(得分:1)
如果T是非类类型,则在必要时使用标准转换将其他值转换为cv非限定版本的T.
对于指针类型,用0初始化它使其成为空指针。请参阅Pointer conversions。
空指针常量(参见NULL)可以转换为任何指针类型,结果是该类型的空指针值。
答案 3 :(得分:1)
这只是初始化指针。它正在初始化为null。
答案 4 :(得分:0)
这是一个构造函数调用。由于没有定义构造函数,编译器会提供一个构造函数。 在C ++ 11之后,首选形式是节点* ptr1 {0};'使用大括号。