gpt4 book ai didi

c++ - new (this) 是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 15:10:35 25 4
gpt4 key购买 nike

我找到了这个代码示例进行研究:

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

当我查看 the documentation 时对于 new 没有采用指针的版本。因此:

  1. 新(这个)是什么意思?
  2. 它的用途是什么?
  3. 文档中没有列出怎么能这样调用呢?

最佳答案

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

它在括号中指定的地址中构造了一个 T 类型的对象,但没有为其分配内存。

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

关于c++ - new (this) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22604598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com