首页
社区
课程
招聘
[分享]C++基础二-命名空间
2021-8-20 15:50 5584

[分享]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
#include <iostream>
//声明命名空间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世界

收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 179
活跃值: (264)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lanxz 2021-8-21 20:59
2
0
iostream、fstream是用的比较少。
游客
登录 | 注册 方可回帖
返回