基本上,如果我有一个变量T value
和一个将T func(const T &)
转换为另一个T
的函数new (&value) T(func(value))
,我可以value
吗?我不确定重写同一个地方是否会导致问题。可以在func(value)
完成之前覆盖旧的sudo
吗?
UPDATE:我这样做是为了尝试将尾递归转换为循环(编译器无法通过非平凡的析构函数对其进行优化)。方法比放置新的方法更受欢迎!
答案 0 :(得分:1)
不,你不能(安全地)这样做。必须在已分配但未初始化的内存或POD对象上使用Placement new。
您不能绕过构造函数,复制,移动对象上的ctors /赋值和析构函数(POD除外)。如果你想这样做,你的设计就会出现问题,你需要去绘图板。