C++编程:避免99个常见错误指南

需积分: 10 4 下载量 68 浏览量 更新于2024-09-30 收藏 5.89MB PDF 举报
"C++99个常见错误" 这篇文档是关于C++编程中常见的错误和陷阱的指南,由Stephen C. Dewhurst撰写并由高博翻译。它涵盖了基础问题、语法问题和预处理器问题等多个方面,旨在帮助程序员避免编码和设计中的常见问题。文档的最新修订日期为2008年12月3日,并遵循知识共享署名-非商业性使用-禁止演绎2.5中国大陆许可协议。 在基础问题部分,作者提到了几个关键的错误: 1. 过分积极的注释:过度注释可能导致代码的维护困难,因为注释可能与代码不符。 2. 幻数:直接在代码中使用未定义的数值常量,可能导致难以理解的代码和潜在的错误。 3. 全局变量:过度使用全局变量会增加代码的复杂性和耦合度,可能导致意外的副作用。 4. 未能区分函数重载和形式参数默认值:这两者可能导致函数调用的混淆。 5. 引用的理解误区:不恰当使用引用可能导致内存管理问题。 6. 对常量(性)的认识误区:不理解const的含义和作用,可能导致意外修改。 7. 无视基础语言的精妙之处:如不充分利用C++的特性,如模板、异常处理等。 8. 未能区分可访问性和可见性:混淆这两个概念可能导致安全问题。 9. 使用糟糕的语言:可能指的是不推荐的C++特性或不良编程习惯。 10. 无视(久经考验的)习惯用法:忽视标准库和最佳实践可能导致低效代码。 11. 聪明反被聪明误:过于复杂的解决方案可能导致代码难以理解和维护。 12. 嘴上无毛,办事不牢:新手程序员常犯的错误,如不充分测试和调试。 在语法问题章节,作者讨论了C++语法的一些常见陷阱: 13. 数组定义和值初始化的混淆:可能导致内存分配错误。 14. 捉摸不定的评估求值次序:不考虑运算符的求值顺序可能导致预期之外的结果。 15. 运算符优先级问题:不熟悉运算符优先级可能导致错误的计算。 16. for语句的理解障碍:可能对for循环的逻辑有误解。 17. 取大优先解析原则的问题:这可能导致括号使用不当的解析问题。 18. 声明饰词次序的小聪明:错误地调整声明顺序可能导致类型解析错误。 19. “函数还是对象”的多义性:可能导致函数和对象的混淆。 20. 效果漂移的型别量化饰词:在模板中不正确使用类型参数可能导致编译错误。 21. 自反初始化:可能涉及不正确的对象自我初始化。 22. 静态连接型别和外部连接型别的混淆:这可能导致链接错误。 23. 运算符函数名字查找的反常行为:可能涉及运算符重载的不寻常规则。 24. 晦涩难懂的`operator->`:不恰当使用这个运算符可能导致代码难以理解。 预处理器问题部分: 25. 使用`#define`定义的字面量:可能导致宏替换的不可预见行为。 26. 使用`#define`定义的伪函数(函数宏):宏可能导致代码的不可控性。 27. `#if`的滥用:不正确的条件编译可能导致代码难以理解和维护。 28. 断言(assert)的不适当使用:可能忽略了一些运行时错误检查。 通过学习这些错误和陷阱,C++程序员可以提高代码质量,减少调试时间,编写出更安全、更可维护的软件。这份指南对于初学者和经验丰富的开发者来说都是一份宝贵的参考资料。