namespace
定义:命名空间为防止大型项目中的名称冲突提供了一种方法。
作用:在命名空间块内声明的符号被放置在命名作用域中,以防止它们被误认为是其他作用域中的同名符号。
允许多个具有相同名称的命名空间块。这些块中的所有声明都在命名范围中声明。
namespace定义语法:
note:命名空间中的变量可以执行初始化,不能直接执行赋值操作,赋值需要在命名空间的函数中。因为编译器不知道赋值操作的作用域。
- namespace后面没有跟变量名,是一个独特的命名空间,后面的程序中都能直接调用该命名空间的值。编译器会自动把该命名空间定义唯一标识名称。并且使用using指令,使得之后的程序能够访问该命名空间。
namespace {
int tmp_a;
}
2.namespace后面跟变量名,最常用的定义方法。
namespace aaron {
int aaron_a;
}
3.namespace前面加inline,类似于未命名命名空间(1)的隐式 using 指令,后面的程序中都能直接调用该命名空间的值。
inline namespace E {
int e_a = 3;
}
namespace B {
namespace C {
int nest_a = 1;
}
inline namespace D {
int nest_b = 2;
}
void func() {
C::nest_a++;
std::cout << C::nest_a << std::endl;
}
void func2() {
nest_b++;
std::cout << nest_b << std::endl;
}
}
namespace使用语法:
- 直接在其他作用域使用命名空间名::变量名
- 在其他作用域使用using 命名空间名::变量名,之后就可以直接使用该命名空间中的该变量名,变量名不用添加命名空间名::
- 在其他作用域使用using namespace 命名空间名,之后就可以直接使用该命名空间中的所有变量名,变量名不用添加命名空间名::