繁体   English   中英

新(这)意味着什么?

[英]What does new (this) mean?

我发现这个代码示例用于研究:

T & T::operator=(T const & x)
{
  if (this != &x)
  {
    this->~T(); // destroy in place
    new (this) T(x); // construct in place
  }
  return *this;
}

当我查看new 文档时 ,没有一个版本需要指针。 从而:

  1. 新(这)意味着什么?
  2. 它是干什么用的?
  3. 如果未在文档中列出,如何调用它?

它被称为“placement new”,代码片段中的注释几乎可以解释它:

它在括号中指定的地址中构造类型为T的对象,而不为其分配内存。

所以你要看的是一个复制赋值运算符,它首先销毁被复制的对象(不释放内存),然后在同一个内存地址中构造一个新的。 (正如评论中所指出的那样,以这种方式实现运算符也是一个非常糟糕的主意)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM