gpt4 book ai didi

c++ - 重新调用静态分配对象的构造函数

转载 作者:太空狗 更新时间:2023-10-29 21:42:20 25 4
gpt4 key购买 nike

我有一个静态分配的对象。此对象没有 operator=,我需要重建它。

所以,这对我有用:

myObj = T(...);

我目前的做法是:

myObj.~T()
new(&myObj) T(...);

但感觉不对,所以我想知道我在这里是否遗漏了任何陷阱。

最佳答案

如果一个对象是静态分配的,并且您希望在不求助于 UB 的情况下重新分配它,最好的办法是控制范围并做出决定

  1. 最迟什么时候你可以等到你应该分配对象
  2. 你最早应该在什么时候释放对象

为了更好地理解它让我们考虑一个例子

void foo()
{
{
Foo obj(...); // obj gets allocated
// Code which uses obj
} // obj gets automatically de-allocated
{
Foo obj; // obj gets allocated (default constructed)
// Code which uses obj
} // obj gets automatically de-allocated
}

关于c++ - 重新调用静态分配对象的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26680172/

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