C++ 的中.h与.cpp文件介绍 #include与#include ""区别 |
您所在的位置:网站首页 › 找不到cpp文件 › C++ 的中.h与.cpp文件介绍 #include与#include ""区别 |
#include< >直接从编译器自带的函数库中寻找文件
#include" "是先从自定义的文件中找 ,如果找不到在从函数库中寻找文件
采用"< >"方式进行包含的头文件表示让编译器在编译器的预设标准路径下去搜索相应的头文件,如果找不到则报错。 特别要注意的是,如果是标准库头文件,那么既可以采用的方式,又可以采用" "的方式,而用户自定义的头文件只能采用" "的方式。 例如,如下这种方式是正确的: #include 效率较高(编译器自带的函数库中寻找文件) #include "iostream"效率较低(从自定义的文件中找 ,如果找不到在从函数库中寻找文件) 如下这种方式是不正确的: #include hanli.h是我们自己创建的头文件 c++中xx.h和xx.cpp之间的联系不是很严格的讲,*.h文件做的是类的声明,包括类成员的定义和函数的声明,而*.cpp文件做的类成员函数的具体实现(定义)。 一个*.h文件和*.cpp文件一般是配对的。在*.cpp文件的第一行一般也是#include"*.h"文件,其实也相当于把*.h文件里的东西复制到*.cpp文件的开头。所以,你全部写在*.cpp文件其实也是一样的。 除了编程规范外,还涉及到类一个重要性质,就是封装性。比如现在我们公司和另一家软件公司合作,这样就必然要互相提供一些软件的信息(比如一些类,它到底是要做什么的),可是在提供这些信息的同时我们又不像让对方知道我们这些类的具体实现,毕竟这些是我们公司的算法核心和心血啊。所以这个时候就可以把类的接口(这个类是要做什么的)放在*.h文件中,而具体类的实现放在 *.cpp文件。这时候我们只要给对方公司*.h文件就行了。这样既提供了必要的信息,又保护了我们的核心代码。 头文件(.h):C++ 头文件仍然以.h为后缀,它们所包含的类、函数、宏等都是全局范围的。写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):
这样做是为了防止重复编译,不这样做就有可能出错。 至于CIRCLE_H这个名字实际上是无所谓的,你叫什么都行,只要符合规范都行。原则上来说,非常建议把它写成这种形式,因为比较容易和头文件的名字对应。 源文件(.cpp):源文件主要写实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了。 下面举个最简单的例子来描述一下,咱就求个圆面积。 在头文件的文件夹里新建一个名为Circle.h的头文件,它的内容如下: #ifndef CIRCLE_H #define CIRCLE_H 注意到开头结尾的预编译语句。在头文件里,并不写出函数的具体实现。 第2步,要给出Circle类的具体实现,因此,在源文件夹里新建一个Circle.cpp的文件,它的内容如下: #include "Circle.h" 需要注意的是:开头处包含了Circle.h,事实上,只要此cpp文件用到的文件,都要包含进来!这个文件的名字其实不一定要叫Circle.cpp,但非常建议cpp文件与头文件相对应。 最后,我们建一个main.cpp来测试我们写的Circle类,它的内容如下:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |