bada C ++样式指南/体系结构使用two-step initialization个C ++对象。
为什么他们不仅仅需要使用scoped_ptr?
答案 0 :(得分:4)
你应该问他们,因为我不是通灵者。
但是我怀疑他们的回答与该页面顶部附近的粗体写的相同:“如果没有两阶段构造,就会发生资源泄漏”。
但是,我不同意这种评估;真正的问题是他们的ComplexClass
构造函数体不是异常安全的。有了这个,代码将更强大与简单的RAII,特别是当它扩展时。
就“他们为什么不简单地要求scoped_ptr”而言:我认为这是一篇关于C ++而不是第三方库的C ++ 03文档。
答案 1 :(得分:0)
范围界定不是两阶段建设的原因。构造函数没有任何其他方式来返回错误而不是异常并且他们没有使用异常的事实是(恕我直言,唯一的原因是他们认为它仍然是10年前)。