new (this)是什么意思?
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
的文档时,没有使用指针的版本。因此:
- new (this)是什么意思?
- 它的用途是什么?
- 如果它没有在文档中列出,怎么能这样调用呢?
它被称为"placement new",代码片段中的注释几乎解释了它:
在括号中指定的地址中构造一个类型为T
的对象,而不为其分配内存。
所以你看到的是一个拷贝赋值操作符,它首先销毁被拷贝对象(不释放内存),然后在相同的内存地址中构造一个新的对象。(正如在注释中指出的那样,以这种方式实现操作符也是一个非常糟糕的主意)
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?