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

[分享]C++基础二-命名空间

2021-8-20 15:50
6457

一个中大型软件往往由多名程序员共同开发,会定义大量的变量和函数,不可避免的会出现变量或者函数的命名冲突,为了解决合作开发时的命名冲突问题,C++引入了命名空间。namespace作为C++中的关键字,用来定义一个命名空间,语法格式:

name是命名空间的名字,它可以包含变量、函数、类、typedef、#define 等,最后由{ }包围。

假设A和B合作开发一款游戏,A负责设计战士warrior,B负责设计法师master,角色都有名字属性,使用命名空间:

使用变量时,需要指明它们所在的命名空间:

:: 符号是域解析操作符,用来指明要使用的命名空间,除了直接使用域解析操作符,还可以使用using关键字进行声明:

在using声明后,如果有未具体指定命名空间的变量产生了命名冲突,那么默认采用声明后的命名空间中的变量。

C++是在C语言的基础上开发的,C++重新编写了库,将类、函数、宏等都统一纳入了一个命名空间,这个命名空间的名字就是std。std是standard的缩写,意思是标准命名空间。

早期的C++仍然使用C语言的库,也开发了一些新的库,增加了自己的头文件,如 iostream.h、fstream.h 等,后来C++引入了命名空间的概念,在保留原有的库和头文件的基础上,复制一份新的库纳入标准命名空间std,形成了新的C++库,为了兼容C语言的库,避免头文件重名,新的C++库对头文件的命名做了调整:
1、C++的头文件名字去掉后缀.h。
2、C语言的头文件采用同样的方法,同时在名字前加一个c字母。

namespace name
{
    //variables
    //functions
    //classes
}
namespace name
{
    //variables
    //functions
    //classes
}
namespace A
{
    char szName[] = "warrior";
}
namespace B
{
    char szName[] = "master";
}
namespace A
{
    char szName[] = "warrior";
}
namespace B
{
    char szName[] = "master";
}
printf("%s\n",A::szName);
printf("%s\n",B::szName);

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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