3 c++
正如本网站所提及的那样... http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.10 但是我没有找到原因,为什么我们应该明确地调用desturctor?
Tod*_*ner 11
您可以将其视为删除调用,但由于您使用了placement new,因此您不希望使用delete,因为这会尝试释放内存.如果您希望自动调用它,您可以使用RAII:
// Could use a templated version, or find an existing impl somewhere:
void destroy_fred(Fred* f) {
f->~Fred();
}
void someCode()
{
char memory[sizeof(Fred)];
void* p = memory;
boost::shared_ptr<Fred> f(new(p) Fred(), destroy_fred);
// ...
// No need for an explicit destructor, cleaned up even during an exception
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6620 次 |
| 最近记录: |