通过调用析构函数和placement new来重新创建对象 - 这是正确的吗?

时间:2017-04-22 16:20:12

标签: c++

class test {
public:
    test() = default;
    ~test() = default;
    void recreate() {
        this->~test();
        new (this) test{};
    }
};

void main() {
    test b;
    b.recreate();
}

撇开你的问题,例如"为什么你需要这个",我的问题 - 这是有效且可接受的C ++代码吗?这里没有隐藏的UB?

它在MSVC 2017中编译。

0 个答案:

没有答案