是否可以将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()
及其成员是否会被正确销毁(所有成员析构函数被调用以及所有其他操作)?