C ++中对象所有权和传输的当前最佳实践是什么?不是C ++ 0x

时间:2010-09-02 01:07:17

标签: c++

特别适用于可维护性很重要的大型项目。 还欢迎解释,链接/参考。

1 个答案:

答案 0 :(得分:2)

C ++通常不会说xyz是最好的。这是因为(以C ++的思维方式)在一个C ++项目中运行良好,在另一个C ++项目中可能效果不佳。这甚至可能适用于同一项目的不同部分。

真正重要的是坚持基本的良好工程实践:

  • 无论您决定什么,都要记录对象的生命周期。事后很难弄清楚对象的生命周期。这是可维护性最重要的考虑因素。

  • 了解您的要求。你打算做跨平台工作吗?你打算与其他语言交流吗?所有这些都会影响你的记忆管理决策。小心过度工程和工程不足。

  • 吻。自动(堆栈)生命周期通常比动态分配更简单。 auto_ptr(或scoped_ptr)通常比shared_ptr更简单。静态全局变量通常很复杂。汇集内存通常很复杂。垃圾收集(boehms类)可以比smart_ptrs简单。但是,所有这些规则旁边都有一个星号,因为坦率地说,答案取决于。

  • 认真思考多线程中可能存在的危险。我提到这个是因为大多数人都弄错了。通常,最强大的政策是不在线程之间共享所有权。

  • 了解如何使用常用的智能指针,以便您可以决定它们是否适合您的项目。不要写自己的智能指针,除非你真的需要它们。雄心勃勃的开发人员在编写自己的智能指针时几乎总是出错。

  • 最后,如果这是一个新项目,如果你真的必须在项目中的所有内容或仅仅是一部分中使用C ++,那就要认真思考。我喜欢C ++和下一个人一样,但我意识到它可能就像没有安全性的枪。

如果这个答案过于笼统,那是因为这个问题很普遍。如果您提供更多详细信息,我们可以提供更详细的答案。