【发布时间】:2017-11-27 13:01:23
【问题描述】:
以下语句的结果是什么?
std::string p;
new (&p) std::string("New word");
它会创建一个新的堆分配吗?还是它只是替换静态变量?它与以下有何不同?
p = std::string("New word");
p = new std::string("New word");
编辑: 多谢你们。是的,它似乎是一个新的展示位置。
【问题讨论】:
-
如果你发布
p的定义,这个问题会更有意义。 -
可能是 stackoverflow.com/q/13370935/10077 的骗子,虽然我犹豫要不要锤它。
-
看起来像是新展示位置
-
第一个代码是未定义的行为(如果一个对象有一个做某事的析构函数,你不能在不先调用析构函数的情况下将它放在它的顶部)。第二个不会编译
标签: c++