在最近的一次采访中的正确使用,有人问我来回答如果这个代码是安全的,如果是我会使用这样的:投放新的和明确的析构函数调用
template<class T> T *CTricky<T>::Safe_Or_Not (T *object)
{
object->T::~T();
::new (object) T;
return object;
}
我的回答是:这段代码是安全的,如果我需要通过调用它的析构函数来释放我的“对象”使用的资源,我会使用这种技术,但同时我不想释放我的“对象”并希望它保存它被放置在内存中(通过在此放置新内容来实现)。
我真的不想在面试中正确回答这个问题。我只是很好奇,看看我对布局新的和显式的析构函数调用的理解是否正确。
[也许相关(http://stackoverflow.com/q/8829548/596781)。 –
这就是为什么要为对象回收空间(和其他所有东西!),移动语义非常好。 –