【C++】C++中的头文件(.h)—详解(1)

fishing-panhttps://blog.csdn.net/u013921430转载请注明出处】

前言

    之前写过一篇《C++中头文件的使用》,那篇文章主要讲述C++中头文件的使用以及注意问题,但是总觉得写的很浅,很简单。没有把问题讲清楚,所以今天想好好整理一下思路,讲一讲C++中的头文件到底是干什么的。本篇博客的主要是把自己早前学习C++时候做的一些笔记整理了一下,来源也主要是论坛上一些大神的博客,以及一些C++学习的入门书籍。

 

什么是头文件(.h)

    头文件是扩展名为 .h 的文件,与源文件(.cpp)一样,头文件中也是C++的源代码,头文件中包含了 C++中函数、类、对象等的声明和宏定义,它可以被多个源文件通过#include引用共享。

 

头文件的价值

     一个事物存在,必有其存在的价值和意义,头文件也一样。

      C++中有“单一定义”规则,即一个对象只能被定义一次,如果在一个源文件中定义了一个函数,其他的源文件想要使用这个函数就需要在使用前声明一下这个函数,在编译结束之后,编译器链接的时候再去查找这些函数的定义。

      当只有一两个函数,源文件的数目也不多的时候,我们完全可以直接在源文件中声明这些函数或者变量。但是当我们面临一个大的项目时,几百个函数,非常多的变量,100个源文件。如果每个函数都在每个源文件中声明。那就太麻烦,太费事了。

      所以,为了达到在不同的源文件中声明的一致性,为了省去这些繁琐又重复的过程,我们可以把这些对象的声明都放在少数几个文件中,需要用到这些声明的时候再到这些文件中查找,这样的文件,就是头文件。

 

头文件的分类

    按照来源的不同,有两种类型的头文件:程序员编写的头文件和标准库(编译器或者其他库的头文件)。

    对于程序员自己编写的头文件的包含使用"filename";

#include "CA.h"

对于标准库头文件的包含使用< filename>;

#include <iostream>

编译过程中的头文件

      C++代码的编译主要通过以下几个过程:预编译->编译->链接,最后生成可执行文件。

      切记,头文件是不参与编译的,编译器只对源文件进行编译。编译器首先对源文件进行预处理,这一步叫预编译。预编译的时候完成头文件中的宏的处理,并且根据#include指令将头文件展开;

      我们看一个简单的例子,下面是一个头文件CA.h

#ifndef CA_H
#define CA_H

int Fun();
#endif

       有两个源文件A.cpp与B.cpp都包含了CA.h

       A.cpp;

#include "CA.h"

int Fun()
{
	return 1;
}

       B.cpp;

#include "CA.h"

int Fun1()
{
	return Fun() + 1;
}

      经过预编译后,这两个源文件分别变为;   

#ifndef CA_H
#define CA_H

int Fun();
#endif
int Fun()
{
    return 1;
}

#ifndef CA_H
#define CA_H

int Fun();
#endif
int Fun1()
{ 
    return Fun() + 1;
} 

这样就实现了再A.cpp与B.cpp中对函数int Fun()的声明。

   接下篇。。。

  相关链接。。《C++中头文件的使用》 、C++中的头文件(.h)—详解(2)


  • 21
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vector是C++一个非常有用的容器类,它可以动态地调整存储空间大小。下面是一些常见的使用方法: 1. 创建Vector 使用Vector时,需要包含头文件<vector>。创建一个空的Vector对象可以使用默认构造函数: ```c++ #include <vector> using namespace std; vector<int> vec; //创建一个空的vector ``` 也可以使用初始化列表来创建一个包含元素的Vector: ```c++ vector<int> vec = {1, 2, 3, 4, 5}; //创建包含5个元素的vector ``` 2. 添加元素 向Vector添加元素使用push_back()方法,可以添加任意类型的元素,例如: ```c++ vec.push_back(6); //向Vector添加一个整数 vec.push_back("hello"); //向Vector添加一个字符串 ``` 3. 访问元素 可以使用下标操作符[]或at()方法来访问Vector的元素,例如: ```c++ int a = vec[0]; //获取Vector第一个元素 int b = vec.at(1); //获取Vector第二个元素 ``` 4. 删除元素 使用erase()方法可以删除Vector的元素,例如: ```c++ vec.erase(vec.begin() + 2); //删除Vector索引为2的元素 ``` 5. 获取Vector大小 使用size()方法可以获取Vector元素的数量,例如: ```c++ int size = vec.size(); //获取Vector元素的数量 ``` 6. 获取Vector容量 使用capacity()方法可以获取Vector的容量,即Vector可以存储的元素数量,例如: ```c++ int capacity = vec.capacity(); //获取Vector的容量 ``` 7. 清空Vector 使用clear()方法可以清空Vector的所有元素,例如: ```c++ vec.clear(); //清空Vector的所有元素 ``` 以上是Vector的一些常见用法,还有很多其他的用法可以参考C++官方文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值