C++语言重要语法之头文件和命名空间

376 阅读3分钟

这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战

头文件和命名空间

C++头文件

C++语言中使用头文件保存程序中用到的声明,例如,函数声明,常量定义等。
代码示例:

1 #include <iostream> 
2 #include <string> 
3 using namespace std; 
4 int main(){ 
5     string name; 
6     cout<<"输入你的名字"<<endl; 
7     cin>>name; 
8     cout<<"Hello "<<name<<endl; 
9     return 0; 
}

上述程序第1行使用# include指令包含了头文件iostreamo。iostream是c++的标准输入输出流。
注意点:

  1. 当在程序中使用cin或cout时,必须在程序的最前面包含这个流。如果还要使用其他的内容,那么需要包含其他的头文件。上述程序中用到了字符串,所以在第2行包含了头文件字符串。
  2. 每条# include指令仅可以包含一个头文件,如果需要包含多个头文件,则需要使用多条# include指令。
  3. 在c++中,头文件不再以“.h”结尾,例如,上述程序中使用的头文件是iostream和字符串。以”.h“结尾的头文件是C语言中常用的头文件。

常用的头文件有以下这些:

  1. 标准输入输出流:;
  2. 标准文件流(文件处理函数):;
  3. 标准字符串处理函数(包含常用的字符串处理函数):;
  4. 标准数学函数(包含常见数学公式):。

除了可以使用系统提供的头文件外,我们还可以定义自己的头文件,并在程序中使用# include指令将其包含进来。 默认规则(使用C++语言的程序员都遵循的规则):
通常,使用尖括号括住系统提供的头文件,使用双引号括住我们自己定义的头文件。

尖括号头文件编译寻找路径

当使用尖括号时,c++编译器将首先在c++系统设定的目录中寻找要包含的文件,如果没有找的到,再到指令中指定的目录中去查找。

双引号头文件编译寻找路径

采用双引号时,c++编译器在用户当前目录下或指令中指定的目录下寻找要包含的文件,例如,要包含ridingroad用户家目录下的头文件custom.h,相应的语句如下:

#include "/home/ridingroad/custom.h"

命名空间namespace

有Python基础的话,理解C++中的命名空间就像和Python的包的概念一样。为了避免不同包里面的命名冲突。一个大型的程序通常由不同的模块构成,各个模块有可能是由不同的程序员开发的。不同模块中出现的标识符之间有可能发生重名现象,这就会引发错误。C++中为了避免名字冲突,特别引入了“命名空间”的定义,即namespace。目的:命名空间的作用是为了消除同众引起的歧义。

上面程序第3行"using namespace std;",表示使用命名空间std。按照Python的理解的话,就是导入std这个包,并且是类似于:

from std import *

一个大型的程序通常由不同的模块构成,各个模块有可能是由不同的程序员开发的。不 同模块中出现的标识符之间有可能发生重名现象,这就会引发错误。C中为了避免名字 (义冲究 特别引入了“命名空间”的定义,即namespace。命名空间的作用是为了消除同众 引起的歧义。

命名空间使用方法

方法1:

命名空间名::标识符名

例如:

stad::cin std::cout std::endl

using语句有两种形式:

using 命名空间名::标识符;  类似于Python的 from xxx import yy
using namespace命名空间名; 类似于Python的 from xxx import *

前一种形式表示,可以在本文件中直接使用该标识符;
后一种形式表示,可以在本文件 中直接使用指定命名空间内的所有标识符。