C ++中new int()和new int {}之间的区别

时间:2017-10-09 05:03:57

标签: c++ new-operator

我知道new int()new int(10)之间的区别。在第一种情况下,分配0,在第二种情况下,将10分配给新创建的int。但是new int {}之间的关系是什么。我们使用{}进行数组初始化,如new a[]{4,5,6}。但对于单变量,初始化时使用大括号的含义是什么?

/* Combined usage and initialized to 0*/
    int *ptr2 = new int();
    cout<<"*ptr2 = "<<*ptr2<<endl;

    /* Allocated memory can be initialized to specific value */
    int*ptr3 = new int(5);
    cout<<"*ptr3 = "<<*ptr3<<endl;

    int* ptr5 = new int{500};
    cout<<"*ptr5 = "<<*ptr5<<endl;

2 个答案:

答案 0 :(得分:3)

您的输出是:

*ptr2 =  0 

*ptr3 =  5 

*ptr5 =  500 

你的情况没有区别。

但总的来说:

( expression-list )     (1)     
= expression            (2)     
{ initializer-list }    (3) 
  

1)以逗号分隔的任意表达式列表和braced-init-lists   在括号中

     

2)等号后跟表达式

     

3)braced-init-list:可能为空,以逗号分隔的列表   表达式和其他braced-init-lists

参考:http://en.cppreference.com/w/cpp/language/initialization

答案 1 :(得分:0)

int(或任何整数类型,例如long)的特定情况下,new int(10)new int{10}之间没有区别。

详细了解variable initialization