bada C++ 风格指南/架构使用C++ 对象的两步初始化。
为什么他们不简单地要求使用 scoped_ptr?
你应该问他们,因为我不是通灵者。
但是我怀疑他们的答案与该页面顶部附近用粗体字写的相同:“没有两阶段构建,就会发生资源泄漏”。
不过,我不同意这种评估;真正的问题是它们的ComplexClass
构造函数体不是异常安全的。有了这些,使用简单 RAII的代码将更加健壮,尤其是在它可扩展时。
就“他们为什么不简单地需要 scoped_ptr”而言:我想这是一个 C++03 文档,它在谈论 C++,而不是第三方库。
范围界定不是两期建设的原因。事实上,构造函数除了异常之外没有任何其他方式来返回错误并且他们没有使用异常(恕我直言,唯一的原因是他们认为这仍然是 10 年前的事)。