C ++放置新的本地对象

时间:2017-03-30 12:27:49

标签: c++ placement-new


是否可以将placement new用于自动对象?请考虑以下示例:

class Button
{
public:
    Button() {  }
    virtual ~Button() {  }

    // and a lot of members
};

class Screen
{
public:
    Screen() {  }
    virtual ~Screen() {  }

    Button submit_btt;

    void doStuff()
    {
        // ...
        submit_btt.~Button();
        new(&submit_btt) Button();
        //...
    }

    // and a lot of members
};

void process(void)
{
    Screen myObj;

    //...
    myObj.doStuff();
    //...
}

此伪代码表示在使用GUI框架时已满足的情况 您对此代码有何看法?有不安全感吗?什么可能出错? 在myObj函数之后,process()及其成员是否会被正确销毁(所有成员析构函数被调用以及所有其他操作)?

0 个答案:

没有答案