高质量 C++/C 编程指南
作者: 林锐 博士
页数: 101页
文件大小: 259.32KB
完成日期: 2001年7月24日
处理状态: done
书籍简介
《高质量 C++/C 编程指南》是林锐博士的经典编程规范著作,被誉为”百页经书”。该书系统阐述了 C++/C 编程的规范与方法,涵盖了从文件结构、命名规则、内存管理到类设计等各个方面,是程序员从”编程老手”迈向”编程高手”的必读之作。
核心内容结构
第1章 文件结构
- 版权和版本的声明
- 头文件的结构与作用
- 定义文件的结构
- 目录结构设计
第2章 程序的版式
- 空行与代码行的规范使用
- 代码行内的空格规则
- 对齐与长行拆分
- 注释的编写规范
- 类的版式设计
第3章 命名规则
- 共性命名规则
- Windows应用程序命名规范
- UNIX应用程序命名规范
第4章 表达式和基本语句
- 运算符优先级处理
- 复合表达式优化
- IF、循环、SWITCH、GOTO语句规范
第5章 常量
- CONST与#define的比较
- 常量定义规则
- 类中常量的使用
第6章 函数设计
- 参数的规则
- 返回值的规则
- 函数内部实现的规则
- 断言的使用
- 引用与指针的比较
第7章 内存管理(核心章节)
- 内存分配方式
- 常见内存错误及对策
- 指针与数组的对比
- FREE和DELETE的陷阱
- 杜绝”野指针”
- MALLOC/FREE vs NEW/DELETE
- 内存耗尽的处理
第8章 C++函数的高级特性
- 函数重载概念
- 成员函数的重载、覆盖与隐藏
- 参数的缺省值
- 运算符重载
- 函数内联
第9章 类的构造函数、析构函数与赋值函数
- 构造函数与析构函数的起源
- 构造函数的初始化表
- 构造和析构的次序
- 类STRING的实现示例
- 拷贝构造函数与赋值函数的重要性
- 派生类中基本函数的实现
第10章 类的继承与组合
- 继承的设计原则
- 组合的使用场景
第11章 其它编程经验
- 使用CONST提高函数健壮性
- 提高程序效率的方法
- 有益建议汇总
核心知识点
1. 内存管理黄金法则
// 正确示例:确保指针使用后置空
int* p = new int;
delete p;
p = NULL; // 防止野指针
// 错误示例:忘记释放导致内存泄漏
int* p = new int;
// 忘记 delete p;2. 构造函数初始化表
// 正确:使用初始化表
class String {
String(const char* initial);
private:
char* m_data;
int m_len;
};
String::String(const char* initial) {
// 初始化表更高效
m_data = new char[m_len + 1];
strcpy(m_data, initial);
}3. 引用的优势
// 引用作为参数:避免拷贝开销
void function(const String& input); // 推荐
// 指针作为参数:需要检查NULL
void function(const String* input); // 需判断4. CONST的正确使用
// 提高函数健壮性
const int MAX_SIZE = 100;
const String& operator[](int index) const; // 常成员函数关键原则总结
文件结构原则
- 每个头文件应有版权和版本声明
- 头文件使用include guard防止重复包含
- 目录结构清晰,便于维护
代码版式原则
- 合理使用空行分隔逻辑块
- 代码行长度控制在合理范围
- 注释简洁明了,解释”为什么”而非”是什么”
命名原则
- 使用有意义的名称
- 保持一致性
- 避免缩写和单字母变量(除循环变量)
内存管理原则
- 成对使用new/delete、malloc/free
- 释放后立即置NULL
- 检查指针有效性
- 避免内存泄漏和野指针
实践建议
- 团队开发:建立统一的编码规范,使用代码审查表
- 个人成长:定期阅读并实践书中规则
- 代码审查:参考附录A的代码审查表进行自查
- 考试准备:附录B的试题可作为面试准备材料
与其他知识的关联
- Effective C++ - Scott Meyers补充了更多C++最佳实践
- Modern C++ Design - Andrei Alexandrescu的泛型编程思想
- C++ Concurrency in Action - 现代C++并发编程规范
参考资料
- 原著:《高质量C++/C编程指南》v1.0,林锐,2001年7月
- 附录:C++/C代码审查表、试题及答案