c++命名空间
程序员文章站
2022-07-13 17:57:05
...
为什么需要命名空间?
命名空间是ANSI C引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突
什么是命名空间
所谓命名空间,实际上就是一个由程序设计者命名的内存区域。程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来,如
namespace ns1
{
int a;
double b;
}
说明:
1.a和b仍是全局变量,仅仅是把他们隐藏在命名空间中而已
2.用的时候要加ns1,比如ns1::a 这种用法叫 命名空间限定
3.声明一个命名空间时花括号内不仅可以包括变量,还可以包括以下类型
- 变量
- 常量
- 函数
- 结构体
- 类
- 模板
- 命名空间(可以嵌套)
4.可以为命名空间起一个别名
比如
namespace abcdefg
{
....
}
namespace ag = abcdefg;
5.存在无名的命名空间
namespace
{
...
}
只在本文件中起作用
下面是例子
head1.h
#ifndef HEAD1_H
#define HEAD1_H
namespace ns1
{
int a=10;
}
#endif
head2.h
#ifndef HEAD2_H
#define HEAD2_H
namespace ns2
{
int a=12;
}
#endif
main.cpp
#include <iostream>
#include "head1.h"
#include "head2.h"
using namespace std;
int main()
{
cout<<ns1::a<<endl;
cout<<ns2::a<<endl;
cout << "Hello world!" << endl;
return 0;
}
运行结果
标准命名空间
标准c++库的所有标识符都是在一个名为std的命名空间中定义的,或者说标准头文件(如iostream)中函数,类,对象和类模板是在命名空间std中定义的。
当用到标准头文件里的函数,类,对象时,可以在前面加上命名空间
std::out<<"hello"<<endl;
但是每个函数都加有些不方便,c++常用using namespace语句对命名空间std进行声明,这样就不必对每个命名空间成员进行处理,在文件的开头加入以下using namespace声明:
using namespace std;
这样,在std重定义和声明的所有标识符在本文件中都可以作为全局变量使用。
上一篇: python基础---命名空间与常用函数
下一篇: 杭电OJ 1144(C++)