新int和new(int)之间c ++的区别是什么?

gro*_*ter 22 c++ pointers initialization

有什么区别

int * num = new (int);
Run Code Online (Sandbox Code Playgroud)

int * num = new int;
Run Code Online (Sandbox Code Playgroud)

有什么不同吗?

编辑 thx all.......哪一个是最正确的答案?

sin*_*nek 15

您的示例的上下文没有区别(使用int类型).但是,如果需要创建复合类型的对象,则需要使用带括号的版本.即:

int (**fn_ptr_ok) ()  = new (int (*[10]) ()); // OK
int (**fn_ptr_err) ()  = new int (*[10]) (); // error 
Run Code Online (Sandbox Code Playgroud)


Naw*_*waz 10

对于这种特殊情况,没有任何区别.两者都是一样的.只是第一种语法很少使用,可能是因为它看起来不方便和神秘,需要更多打字!


Joh*_*itb 6

当您想要创建动态数组时,还有另一个不同之处

int n = 2;
int *p = new int[n]; // valid
int *q = new (int[n]); // invalid
Run Code Online (Sandbox Code Playgroud)

带括号的版本需要一个恒定的大小.