-
-
[分享]C++基础二-命名空间
-
2021-8-20 15:50
5584
-
什么是命名空间
一个中大型软件往往由多名程序员共同开发,会定义大量的变量和函数,不可避免的会出现变量或者函数的命名冲突,为了解决合作开发时的命名冲突问题,C++引入了命名空间。namespace作为C++中的关键字,用来定义一个命名空间,语法格式:
1 2 3 4 5 6 | namespace name
{
/ / variables
/ / functions
/ / classes
}
|
name是命名空间的名字,它可以包含变量、函数、类、typedef、#define 等,最后由{ }包围。
命名空间的用法
假设A和B合作开发一款游戏,A负责设计战士warrior,B负责设计法师master,角色都有名字属性,使用命名空间:
1 2 3 4 5 6 7 8 | namespace A
{
char szName[] = "warrior" ;
}
namespace B
{
char szName[] = "master" ;
}
|
使用变量时,需要指明它们所在的命名空间:
1 2 | printf( "%s\n" ,A::szName);
printf( "%s\n" ,B::szName);
|
:: 符号是域解析操作符,用来指明要使用的命名空间,除了直接使用域解析操作符,还可以使用using关键字进行声明:
1 2 3 | using namespace A;
printf( "%s\n" ,szName);
printf( "%s\n" ,B::szName);
|
在using声明后,如果有未具体指定命名空间的变量产生了命名冲突,那么默认采用声明后的命名空间中的变量。
标准命名空间
C++是在C语言的基础上开发的,C++重新编写了库,将类、函数、宏等都统一纳入了一个命名空间,这个命名空间的名字就是std。std是standard的缩写,意思是标准命名空间。
C++ 的头文件
早期的C++仍然使用C语言的库,也开发了一些新的库,增加了自己的头文件,如 iostream.h、fstream.h 等,后来C++引入了命名空间的概念,在保留原有的库和头文件的基础上,复制一份新的库纳入标准命名空间std,形成了新的C++库,为了兼容C语言的库,避免头文件重名,新的C++库对头文件的命名做了调整:
1、C++的头文件名字去掉后缀.h。
2、C语言的头文件采用同样的方法,同时在名字前加一个c字母。
- 旧的C++头文件,如iostream.h、fstream.h等将会继续被支持,尽管它们不在官方标准中。这些头文件的内容不在命名空间std中。
- 新的C++头文件,如iostream、fstream等包含的基本功能和对应的旧版头文件相似,这些头文件的内容在命名空间std中。
- 标准C头文件如stdio.h、stdlib.h等继续被支持,头文件的内容不在命名空间std中。
- 具有C库功能的C++头文件如cstdio、cstdlib提供的内容和相应的旧的C头文件相同,头文件的内容在命名空间std中。
C++ 编程
1 2 3 4 5 6 7 8 | / / 声明命名空间std
using namespace std;
int main()
{
cout<< "namespace" <<endl;
return 0 ;
}
|
github:https://github.com/0I00II000I00I0I0
bilibili:https://space.bilibili.com/284022506
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界