2010年5月12日
摘要: 1)内联有可能是目标代码量或增或减,这取决于被内联的函数的大小。 2)内联那些包含循环或switch语句的函数是得不偿失的。 3)虚函数和递归函数一般不能声明为内联函数。因为虚函数在继承体系中必须取地址,及虚函数指针vptr。内联函数无内存地址。 4)析构函数一般包含隐藏的代码,一般不可内联。即慎重再类定义的.h文件中定义析构函数。 5)函数模板、类模板的声明和定义必须都放到头文件中。否则连接出... 阅读全文
posted @ 2010-05-12 15:43 ︶ㄣ第二名 阅读(813) 评论(0) 推荐(0) 编辑
摘要: 使用前置声明(forward declarations)尽量减少.h文件中#include的数量。 当一个头文件被包含的同时也引入了一项新的依赖(dependency),只要该头文件被修改,代码就要重新编译。使用前置声明可以显著减少需要包含的头文件数量。举例说明:头文件中用到类File,但不需要访问File的类定义,则头文件中只需前置声明class File;无需#include "file/b... 阅读全文
posted @ 2010-05-12 15:33 ︶ㄣ第二名 阅读(705) 评论(0) 推荐(0) 编辑
摘要: 1. 预处理 此时编译器会扫描一个一个的C源文件,如果发现#include了某个.h文件,则把整个.h文件包含进.c文件中,形成一个新的.c文件(实际的实现过程可能不是这样,但原理是这样的)。同时进行相关预处理指令的解释工作,譬如将宏替换成实际的值。 2. 编译源文件 此时编译器会扫描经过第1步之后新生成的源文件,把源代码编译成机器码,生成目标文件。如果发现某个类型不是编译器自含的类型,如一些自定... 阅读全文
posted @ 2010-05-12 15:14 ︶ㄣ第二名 阅读(3468) 评论(0) 推荐(0) 编辑