C++ размещение новых для локальных объектов


Это нормально использовать 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();
    //...
}

Этот псевдокод представляет ситуацию, которая встречалась при работе с графическим интерфейсом.
Что вы думаете об этом коде? Есть ли проблемы с безопасностью? Что может пойти не так? Будет myObj и его 'члены будут должным образом уничтожены (все вызываемые деструкторы-члены и все другие операции) после process() функционировать?

0 ответов

Другие вопросы по тегам