高质量C++/C编程指南 - 林锐博士
基本信息
- 作者: 林锐 博士
- 版本: V1.0 (2001年7月)
- 页数: 101页
- 原始路径: /田浩然上传的资料/电子书/C_C++/高质量C++_C编程指南.pdf
书籍概要
本书是林锐博士编写的一本实用的C++/C编程指南,内容简明扼要,涵盖了从文件结构到高级特性的完整知识体系。作为一份”正式文件”,它不仅是一本学习材料,更是一份可以作为团队规范参考的代码质量标准。
核心主题
1. 文件结构
- 头文件的组织与声明规范
- 定义文件的结构
- 头文件的作用(避免重复包含、声明与定义的分离)
- 目录结构设计
2. 程序的版式
- 空行: 用空行分隔逻辑相关的代码块
- 代码行: 每行代码长度控制,保持可读性
- 空格: 运算符两侧、关键字与括号之间的空格规范
- 对齐: 代码对齐原则
- 长行拆分: 长表达式的换行规则
- 注释: 注释的规范写法,包括文件头注释、函数注释、行内注释
3. 命名规则
- 变量命名:驼峰命名法、下划线分隔法
- 常量命名:全大写+下划线
- 宏命名:全大写
- 函数命名:动词开头,清晰表达意图
- 类命名:大驼峰,名词或名词短语
4. 表达式和基本语句
- 运算符优先级的正确使用
- 复合表达式的可读性优化
- IF语句的规范写法
- 循环语句的效率考量
- FOR循环变量的控制
- SWITCH语句的完整性(default分支)
- GOTO语句的使用限制
5. 常量
- 为什么需要常量
- const与#define的比较
- 常量定义规则
- 类中的常量(static const)
6. 函数设计
- 参数规则:
- 输入参数用const修饰
- 指针参数需检查NULL
- 避免输出参数与返回值混用
- 返回值规则:
- 成功返回true/非零,失败返回false/零
- 注意返回值的使用
- 函数内部实现:
- 保持函数短小精悍
- 单一职责原则
- 断言的使用: assert的合理使用场景
7. 内存管理(重点章节)
- 内存分配方式:栈、堆、静态存储区
- 常见的内存错误:
- 内存泄漏
- 访问野指针
- 使用已释放的内存
- 数组越界
- 指针与数组的对比
- 指针参数如何传递内存
- FREE和DELETE对指针的影响
- 杜绝野指针的技巧
- malloc/free与new/delete的选择
- 内存耗尽的处理策略
8. C++函数的高级特性
- 函数重载: 参数类型、数量、顺序的区别
- 成员函数的重载、覆盖与隐藏:
- 重载:同一作用域,不同参数
- 覆盖:派生类覆盖基类虚函数
- 隐藏:派生类同名函数隐藏基类函数
- 缺省参数: 使用注意事项
- 运算符重载: 合理重载运算符
- 内联函数: inline的使用时机与限制
9. 类的构造函数、析构函数与赋值函数(经典String类示例)
- 构造函数的初始化表
- 构造和析构的次序
- String类示例:
- 普通构造函数
- 拷贝构造函数
- 赋值函数(注意检查自赋值)
- 析构函数
- 派生类中基本函数的实现
10. 类的继承与组合
- 继承的使用原则(is-a关系)
- 组合的使用原则(has-a关系)
- 优先使用组合而非继承
11. 其它编程经验
- 使用const提高函数的健壮性
- 提高程序效率的技巧
- 其他有益建议
关键原则总结
1. 代码可读性原则
- 代码应该像散文一样易于阅读
- 命名要有意义,避免缩写
- 保持代码风格一致
2. 防御性编程原则
- 检查所有输入参数的有效性
- 使用断言捕捉逻辑错误
- 妥善处理错误情况
3. 内存安全原则
- 一一对应new/delete、malloc/free
- 指针使用后及时置NULL
- 避免返回局部变量的地址
4. C++特性使用原则
- 优先使用const而非#define
- 优先使用引用而非指针
- 合理使用内联函数优化性能
- 理解并正确使用拷贝控制和赋值操作
附录内容
A. C++/C代码审查表
提供了系统化的代码审查清单,可用于团队代码评审。
B. C++/C试题
包含精选的编程试题,可用于面试或自我测试。
C. 试题答案与评分标准
提供了试题的详细解答和评分参考。
学习建议
- 通读全文: 本书篇幅适中,建议一次性读完
- 实践对照: 对照自己的代码,找出不符合规范的地方
- 团队共享: 作为团队编码规范的参考文档
- 面试准备: 附录试题适合面试前的复习
与其他知识的关联
- Effective C++ - 更深入探讨C++最佳实践
- Effective Modern C++ - C++11/14的新特性
- C++ Coding Standards - 更系统的101条规范
- Google开源项目风格指南(中文版) - Google团队的编码规范
笔记生成日期: 2026-09-02