指针后括号的意义

时间:2016-05-20 14:59:27

标签: c++ pointers initialization dynamic-memory-allocation parentheses

我想问一下(0)在指针即Node* ptr1(0)之后的意思。

struct Node
{
   string info;
   Node * next
};

int main()
{ 
   Node* ptr1 (0), *ptr2 (0),
   ptr1 = new Node;
   ptr2 = new Node;
}

5 个答案:

答案 0 :(得分:3)

表示用0或 null 初始化指针。

请参阅this问题,了解其背后的解释(它们实际上相同;在此上下文中为0null

答案 1 :(得分:1)

对于任何整数类型T,以下两个声明实际上是等效的:

T obj(0);
T obj = 0;

由于0是一个空指针常量,所以你在这里所做的就是将你的两个指针初始化为null。

有很多方法可以初始化对象,但请考虑如何声明类类型的对象:

MyClass obj(someArguments...);

这是一回事。

答案 2 :(得分:1)

这是direct initialization

  

如果T是非类类型,则在必要时使用标准转换将其他值转换为cv非限定版本的T.

对于指针类型,用0初始化它使其成为空指针。请参阅Pointer conversions

  

空指针常量(参见NULL)可以转换为任何指针类型,结果是该类型的空指针值。

答案 3 :(得分:1)

这只是初始化指针。它正在初始化为null。

答案 4 :(得分:0)

这是一个构造函数调用。由于没有定义构造函数,编译器会提供一个构造函数。 在C ++ 11之后,首选形式是节点* ptr1 {0};'使用大括号。