C++ 命名空间
在团队合作大型项目时,难免会遇到自己想使用的变量名或函数名被占用的情况;命名空间分割了全局空间,每一个命名空间是一个作用域。
语法
定义命名空间
namespace expression {
// 类 函数 模板 定义
}
命名空间的别名
namespace 别名 = 原名
使用命名空间
在同一个命名空间内的变量可以之间使用,在命名空间外必须指出命名空间。
1.**运算符**
Person::a
2.using运算符
using 命名空间名字:: 名字
3.using编译
using namespace 命名空间名字
使用using编译指令可以使整个命名空间内的变量可用,如果区域内有相同的名字会优先使用局部的变量,不过可以使用域名解析符访问命名空间中的变量。
案例
#include "iostream"
using namespace std;
namespace Person { // 命名空间
int a = 0;
int num;
void func(){
cout<<" Person : func"<<endl;
}
}
int main(){
Person::num = 20;
using Person::a;
a = 20;
Person::num = 200;
using Person::a;
a = 20;
Person::func();
}
注意事项
在C++中使用命名空间时,需要注意以下几点:
命名空间的名称应该具有一定的描述性,以便于其他程序员理解其作用。
在头文件中使用命名空间时,应该将其放在头文件的最顶部(在包括预处理指令之后),这样可以防止出现重定义的问题。
在源文件中使用命名空间时,应该将其放在所有函数和全局变量之前。
如果要使用命名空间中的特定成员,可以使用using语句引入,但注意不要过度使用using语句,以免引起命名冲突。
如果命名空间中的成员与其他库或命名空间中的成员发生了命名冲突,可以使用命名空间别名来解决。
注意避免在命名空间中定义全局变量、全局函数等,因为这可能会造成代码可读性和可维护性上的问题。