这是我参与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++的标准输入输出流。
注意点:
- 当在程序中使用cin或cout时,必须在程序的最前面包含这个流。如果还要使用其他的内容,那么需要包含其他的头文件。上述程序中用到了字符串,所以在第2行包含了头文件字符串。
- 每条# include指令仅可以包含一个头文件,如果需要包含多个头文件,则需要使用多条# include指令。
- 在c++中,头文件不再以“.h”结尾,例如,上述程序中使用的头文件是iostream和字符串。以”.h“结尾的头文件是C语言中常用的头文件。
常用的头文件有以下这些:
- 标准输入输出流:;
- 标准文件流(文件处理函数):;
- 标准字符串处理函数(包含常用的字符串处理函数):;
- 标准数学函数(包含常见数学公式):。
除了可以使用系统提供的头文件外,我们还可以定义自己的头文件,并在程序中使用# 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 *
前一种形式表示,可以在本文件中直接使用该标识符;
后一种形式表示,可以在本文件 中直接使用指定命名空间内的所有标识符。