对于c ++中表达式new(&t)T(t)的&t是什么意思?
标题.
T t;
new (&t) T(t);
Run Code Online (Sandbox Code Playgroud)
这是一个放置 new的示例,其中容器是t使用 Type 创建的对象的起始地址T
该示例代码使用复制构造函数创建一个 Type 对象T,该构造函数接受 Type 参数T并将该对象放置在该对象的内存位置中t。
只是为了构思这个想法,将类型视为整数,因此您的模板代码如下所示
int t;
new (&t) int(t);
Run Code Online (Sandbox Code Playgroud)
显然,新的放置是多余且令人困惑的。编写如此奇怪的代码的唯一原因可能是使用复制构造函数强制初始化对象,除了复制用户可能感兴趣的对象的内容之外,该构造函数可能还有一些附加代码。