c++ - 我应该避免哪些 C++ 陷阱?

标签 c++ stl

我记得第一次学习 STL 中的 vector ,一段时间后,我想在我的一个项目中使用 bool vector 。在看到一些奇怪的行为并做了一些研究后,我了解到 a vector of bools is not really a vector of bools .

在 C++ 中是否还有其他常见的陷阱需要避免?

最佳答案

一个简短的列表可能是:

  • 通过使用共享指针来管理内存分配和清理,避免内存泄漏
  • 使用 Resource Acquisition Is Initialization (RAII) 管理资源清理的习惯用法 - 尤其是在存在异常的情况下
  • 避免在构造函数中调用虚函数
  • 尽可能采用极简编码技术 - 例如,仅在需要时声明变量、确定变量范围以及尽可能提前设计。
  • 真正了解您的代码中的异常处理 - 无论是您抛出的异常,还是您可能间接使用的类抛出的异常。这在存在模板的情况下尤其重要。

RAII、共享指针和极简编码当然不是 C++ 特有的,但它们有助于避免在使用该语言进行开发时经常出现的问题。

一些关于这个主题的优秀书籍是:

  • Effective C++ - Scott Meyers
  • 更有效的 C++ - Scott Meyers
  • C++ 编码标准 - Sutter 和 Alexandrescu
  • C++ 常见问题解答 - Cline

阅读这些书帮助我避免了您所询问的那种陷阱。

关于c++ - 我应该避免哪些 C++ 陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30373/

相关文章:

c++ - 为什么队列的内容在我使用 "for loop"时显示,但在我使用 "while loop"时不显示?

c++ - 谁能解释一下 Android 中 C 运行时的哪些功能(通过 NDK)不受支持?

c++ - 在 C++ 中使用 std::getline() 的签名错误

c++ - 减去2张 map

C++构造函数问题

c++ - CRTP 和唯一持久标识符

c++ - 如何在 C++ 中跟踪我机器中的文件

c++ - 使用不同的字符编码

c++ - 为什么这个函数返回一个 link_type 但它被声明为迭代器

c++ - 如何初始化 std::vector 数组?