头文件和源文件怎么写( 三 )


7. C++中头文件(.h)和源文件(.cpp)都应该写些什么 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下): #ifndef CIRCLE_H
#define CIRCLE_H//你的代码写在这里#endif 这样做是为了防止重复编译,不这样做就有可能出错 。至于CIRCLE_H这个名字实际上是无所谓的,你叫什么都行,只要符合规范都行 。原则上来说,非常建议把它写成这种形式,因为比较容易和头文件的名字对应 。源文件(.cpp): 源文件主要写实现头文件中已经声明的那些函数的具体代码 。需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件 。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了 。下面举个最简单的例子来描述一下,咱就求个圆面积 。第1步,建立一个空工程(以在VS2003环境下为例) 。第2步,在头文件的文件夹里新建一个名为Circle.h的头文件,它的内容如下: #ifndef CIRCLE_H
#define CIRCLE_Hclass Circle{private:double r;//半径public:
Circle();//构造函数 Circle(double R);//构造函数 double Area();//求面积函数};
#endif 注意到开头结尾的预编译语句 。在头文件里,并不写出函数的具体实现 。第3步,要给出Circle类的具体实现,因此,在源文件夹里新建一个Circle.cpp的文件,它的内容如下: #include "Circle.h"Circle::Circle(){this->r=5.0;
}Circle::Circle(double R){this->r=R;}double Circle:: Area(){return 3.14*r*r;
} 需要注意的是:开头处包含了Circle.h,事实上,只要此cpp文件用到的文件,都要包含进来!这个文件的名字其实不一定要叫Circle.cpp,但非常建议cpp文件与头文件相对应 。最后,我们建一个main.cpp来测试我们写的Circle类,它的内容如下: #include <iostream>#include "Circle.h"using namespace std;int main(){Circle c(3);
cout<<"Area="<<c.Area()<<endl;return 1;} 注意到开头时有#include "Circle.h"的声明,证明我们使用到了我们刚才写的Circle类 。
8. C语言代码的头文件与源文件有什么区别 大家对头文件都有一定的误解 C,C++程序,本质上只需要 .C,.CPP文件就可以.这两个文件会被编译器编译生成模块. 头文件其实就是一个额外的文本文件,#include这个预编译命令会把这个文本文件中的内容插入到这个指令的位置. 在CPP文件中使用#include命令来包含一个头文件,相当于把头文件中的代码拷贝到CPP文件中调用该预编译指令的位置. 之所以要用到头文件,那是因为在编译过程中,一个CPP中如果要调用或使用另外一个模块中的函数或其它符号,就必须先写这个函数或符号的声明. 比如 void funB(); void funA() { funB(); } void funB() { } funA要调用funB,你们在funA之前就必须先有funB的声明,有了这个funB的声明,无论funB的定义在哪,funA都能被编译通过了.只要链接时能在所有模块中找到这个funB,你们程序就能链接成功,执行了. 正因为这个关系,所以我们一般为一个CPP中的所有函数都写一个声明在对应的H文件中,这样,其他CPP只要包含了这个H文件,就有了这个CPP中所有函数或符号的声明,就可以使用这个CPP中实现的函数或定义的符号了.没有头文件,程序也是完全可以的,只是你每次调用其他CPP中的函数时,都得自己在CPP中再写一遍你要调用的函数的声明. 说的不够详细,不知道大家能否理解. 头文件就是一个代码文本,放一些声明,让其他源代码文件来包含的.因为会被多个CPP包含,所以当你把定义放到头文件中时,如果有两个或以上地方包含了这个头文件,那么这个定义就也会有多份(因为预处理指令#include 做的是完全的代码拷贝),就会出现重复定义的错误 。