-
-
[分享]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期)