前言:
- 在C语言中定义了3个层次的作用域:文件(编译单元)、函数和符号语句
- 在C++中,增加了类,全局变量中不能有同名函数,变量、类
- 那么为了使同名类存在,就要增加作用域,于是就有了命名空间。
什么是命名空间
- 命名空间是 ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。
- 命名空间:实际上就是一个由程序设计者命名的内存区域(分类用的),没有给命名空间分类的作用域,同层次命名空间就不能重名。
- 全局变量可以理解为全局命名空间就像根目录,在全局命名空间(根目录),创建命名空间(文件夹),文件夹下再创建文件夹。
namespace
a
{
int
b;
double
c;
}
实作
// main.cpp
#include<iostream>
namespace n1 {
namespace n1 {
int read = 10;
}
}
int main() {
printf("%d\n", n1::n1::read);
return 0;
}
// 打印 10
使用方法
using namespace n1
// main.cpp
#include<iostream>
namespace n1 {
int read = 20;
}
namespace n2 {
int read = 20;
}
using namespace n1;
int main() {
printf("%d\n", read);
return 0;
}
// 打印 20
或者这样使用
n1::a 相当于给路径
// main.cpp
#include<iostream>
namespace n1 {
int read = 20;
}
namespace n2 {
int read = 30;
}
int main() {
printf("%d\n", n2::read);
return 0;
}
// 打印 30