gpt4 book ai didi

C++ 就地放置 new

转载 作者:行者123 更新时间:2023-11-30 05:29:11 25 4
gpt4 key购买 nike

基本上,如果我有一个变量 T value,以及一个将 T 转换为另一个的函数 T func(const T &) ,我可以做 new (&value) T(func(value)) 吗?我不确定重写同一个地方是否会导致问题。旧的 value 能否在 func(value) 完成之前被覆盖?

更新:我这样做是为了尝试将尾递归转换为循环(由于非平凡的析构函数,编译器无法对其进行优化)。比 placement new 更好的方法非常受欢迎!

最佳答案

不,你不能(安全地)那样做。 placement new 必须用于已分配但未初始化的内存或 POD 对象。

您不能只是绕过构造函数、复制、移动对象上的构造函数/赋值和析构函数(POD 除外)。如果你想这样做,你的设计就有问题,你需要重新开始。

关于C++ 就地放置 new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36514270/

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