每个C++程序一般分为两个文件。一个是用于保存程序的声明(declaration),称为头文件,后缀为“.h";一个是用于保存程序的实现,称为定义(definition),后缀为".c" / ".cpp"。
头文件一般由三部分组成:
(1)版权和版本声明。
(2)预处理块。为了防止头文件被重复引用,应当用ifndef / define / endif 结构产生预处理块。
(3)成员变量,成员方法和类结构的声明。
用 #include <filename.h> 格式来引用标准库的头文件,此时编译器将从标准库目录开始搜索。
用 #include “filename.h” 格式来引用非标准库的头文件,编译器则将从用户的工作目录开始搜索。
建议头文件中只存放“声明”而不存放“定义”,因为在C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。
定义文件一般由三部分组成:
(1)版权和版本声明。
(2)头文件的引用说明。
(3)程序的实现体。
头文件的作用主要有以下两点:
1)通过头文件调用库功能。在很多场合,源代码不便/不准向用户公开,只需向用户提供头文件和二进制的库即可。用户只需按头文件中的接口声明来调用库,而不必理会其具体实现。编译器会自动从库中提取相应代码。
2)头文件能加强类型检查。当某个接口被实现或使用时,其方式必须与头文件中的声明一致。否则编译器会报错。
头文件一般由三部分组成:
(1)版权和版本声明。
(2)预处理块。为了防止头文件被重复引用,应当用ifndef / define / endif 结构产生预处理块。
(3)成员变量,成员方法和类结构的声明。
用 #include <filename.h> 格式来引用标准库的头文件,此时编译器将从标准库目录开始搜索。
用 #include “filename.h” 格式来引用非标准库的头文件,编译器则将从用户的工作目录开始搜索。
建议头文件中只存放“声明”而不存放“定义”,因为在C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。
定义文件一般由三部分组成:
(1)版权和版本声明。
(2)头文件的引用说明。
(3)程序的实现体。
头文件的作用主要有以下两点:
1)通过头文件调用库功能。在很多场合,源代码不便/不准向用户公开,只需向用户提供头文件和二进制的库即可。用户只需按头文件中的接口声明来调用库,而不必理会其具体实现。编译器会自动从库中提取相应代码。
2)头文件能加强类型检查。当某个接口被实现或使用时,其方式必须与头文件中的声明一致。否则编译器会报错。