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)
当您想要创建动态数组时,还有另一个不同之处
int n = 2;
int *p = new int[n]; // valid
int *q = new (int[n]); // invalid
Run Code Online (Sandbox Code Playgroud)
带括号的版本需要一个恒定的大小.