为什么要有命名空间的出现
在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域
From DeepSeek 20250218
C++ 的namespace机制通过逻辑隔离和分层组织,解决了大型项目中的命名冲突问题,同时提高了代码的可读性和可维护性。它是现代 C++ 开发中不可或缺的基础设施,尤其在多团队协作、使用第三方库的场景下作用显著。
C++作用域级别
代码块、复合语句、函数体
类
命名空间
全局
注意
命名空间可以是全局的,也可以位于另一个命名空间之中,但是不能位于类和代码块中
而using指令是改变了标识符的作用域可见性
```C++
#include
void test1()
{
{
// 代码块级作用域
using namespace std;
cout <<"debug1" << endl;
}
// cout << "debug2" << endl;
}
void ff()
{
// cout << "debug20" << endl;
}
void test2()
{
// 函数级别
using namespace std;
cout <<"debug10" << endl;
ff();
}
namespace data1 {
int num =10;
}
namespace data2 {
int num =20;
namespace data3 {
int num =30;
}
}
void test3()
{
int num =50;
using namespace std;
using namespace data1;
using namespace data2;
cout << num << endl;
}
int main()
{
test1();
test2();
test3();
}
```