C++基础学习笔记——命名空间namespace用法
命名空间的意义:
在C++应用程序中会出现定义在不同区域中同名方法或者变量的情况。例如,可能我正在编写一段自己带有名为xyz()子函数的代码,并且我还链接有另一个可用的库,它也具有相同的xyz()子函数。现在编译器无法知道在代码中引用的xyz()函数的哪个版本。
名称空间(namespace)被设计来克服这个困难,并被用作额外的信息来区分类似的函数、类、变量等等,它们在不同的库中具有相同的名称。使用名称空间,就可以定义定义名称的上下文。本质上,名称空间定义了一个范围。
在C语言中所有的全局标识符共享一个作用域,所以不同范围下定义的同样的标识符会冲突,因为C语言只有一个全局作用域。
在C++中提出了命名空间的概念,命名空间将全局作用域分成不同的部分,不同命名空间中的标识符可以同名而不会发生冲突,命名空间可以发生嵌套。全局作用域也叫默认命名空间。
C++命名空间的使用:
实例:
#include <stdio.h>
#include <iostream>
namespace First
{
int i = 0;
}
namespace Second
{
int i = 1;
namespace Internal //嵌套命名空间
{
struct P //嵌套命名空间
{
int x;
int y;
};
}
}
int main()
{
using namespace First; //使用整个命名空间
using Second::Internal::P; //使用嵌套的命名空间
printf("First::i = %d\n", i);
printf("Second::i = %d\n", Second::i); //使用命名空间中的变量
P p = { 2, 3 };
printf("p.x = %d\n", p.x);
printf("p.y = %d\n", p.y);
system("pause");
return 0;
}
输出结果为:
参考:namespace详解