目录
前言
第 章文件结构
版权和版本的声明
头文件的结构
定义文件的结构
头文件的作用
目录结构
第 章程序的版式
空行
代码行
代码行内的空格
对齐
长行拆分
修饰符的位置
注释
类的版式
第 章命名规则
共性规则
简单的 应用程序命名规则
简单的 应用程序命名规则
第 章表达式和基本语句
运算符的优先级
复合表达式
语句
循环语句的效率
语句的循环控制变量
语句
语句
第 章常量
为什么需要常量
与 的比较
常量定义规则
类中的常量
第 章函数设计
参数的规则
返回值的规则
函数内部实现的规则
其它建议
使用断言
引用与指针的比较
第 章内存管理
内存分配方式
常见的内存错误及其对策
指针与数组的对比
指针参数是如何传递内存的?
和 把指针怎么啦?
动态内存会被自动释放吗?
杜绝“野指针”
有了 为什么还要 ?
内存耗尽怎么办?
的使用要点
的使用要点
一些心得体会
第 章 !!函数的高级特性
函数重载的概念
成员函数的重载、覆盖与隐藏
参数的缺省值
运算符重载
函数内联
一些心得体会
第 章类的构造函数、析构函数与赋值函数
构造函数与析构函数的起源
构造函数的初始化表
构造和析构的次序
示例:类 的构造函数与析构函数
不要轻视拷贝构造函数与赋值函数
示例:类 的拷贝构造函数与赋值函数
偷懒的办法处理拷贝构造函数与赋值函数
如何在派生类中实现类的基本函数
一些心得体会
第 章类的继承与组合
继承
组合
第 章其它编程经验
使用 提高函数的健壮性
提高程序的效率
一些有益的建议
参考文献
附录 :!! 代码审查表
附录 ":!! 试题
附录 :!! 试题的答案与评分标准
第 章文件结构
每个 !! 程序通常分为两个文件。一个文件用于保存程序的声明(#$%&'(')*+,),称为头文件。
另一个文件用于保存程序的实现(*-.&$-$,)')*+,),称为定义(#$/,*)*+,)文件。
!! 程序的头文件以“01为后缀, 程序的定义文件以“%1为后缀,!!程序的定义文件通常以
“%..1为后缀(也有一些系统以“%%1或“%221为后缀)。
头文件的结构
头文件由三部分内容组成:
()头文件开头处的版权和版本声明(参见示例 3)。
()预处理块。
()函数和类结构声明等。
假设头文件名称为 4('.0*%50,头文件的结构参见示例 3。
6
& &66666666【规则 33】为了防止头文件被重复引用,应当用 *7,#$7#$/,$$,#*7 结构产生预处理块。
& &66666666【规则 33】用*,%&8#$9/&$,'-$0:格式来引用标准库的头文件(编译器将从标准库目
录开始搜索)。
& &66666666【规则 33】用*,%&8#$;/&$,'-$01格式来引用非标准库的头文件(编译器将从用户的工
作目录开始搜索)。
< <6666666【建议 33】头文件中只存放“声明”而不存放“定义”
在 !!语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来
书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有
多么小。
< <6666666【建议 33】不提倡使用全局变量,尽量不要在头文件中出现象 $2)$(,*,)='&8$这类声明。
6
版权和版本声明见示例 3,此处省略。
6
*7,#$76>?666防止 4('.0*%50 被重复引用
#$/,$6>?
6
*,%&8#$9-')00:66666引用标准库的头文件
@
*,%&8#$;-A0$'#$(016666引用非标准库的头文件
@
=+*#8,%)*+,B@CD666全局函数声明
@
%&'55"+2666666666666类结构声明
E
@
FD
$,#*7
示例 3!! 头文件的结构
6
定义文件的结构
定义文件有三部分内容:
() () 定义文件开头处的版权和版本声明(参见示例 3)。
() () 对一些头文件的引用。
() () 程序的实现体(包括数据和代码)。
假设定义文件的名称为 4('.0*%5%..,定义文件的结构参见示例 3。
6
版权和版本声明见示例 3,此处省略。
6
*,%&8#$;4('.0*%50166666666引用头文件
@
6
全局函数的实现体
=+*#8,%)*+,B@C
E
@
F
6
类成员函数的实现体
评论0