这第二个新内容是什么?

Ami*_*deh 14 c++ syntax terminology placement-new new-operator

第二行是什么?(在回答另一个问题时看到.)

int * x = new int [1] ;
int * y = new (x) int;
Run Code Online (Sandbox Code Playgroud)

在第二行x和y之后具有相同的值(指向相同的地方).y = x和第二行之间有什么区别?它像构造函数还是什么?

Oli*_*rth 13

这是安置.它构造了一个新int的内存指向x.

如果你试试:

int * x = new int [1];
*x = 5;
std::cout << *x << std::endl;
int * y = new (x) int;
*y = 7;
std::cout << *x << std::endl;
Run Code Online (Sandbox Code Playgroud)

输出将是:

5
7
Run Code Online (Sandbox Code Playgroud)

  • @Green Code:对于原始类型,是的,基本上没有区别.对于类类型,有一个很大的区别,因为构造函数将再次被调用. (4认同)