2019.10.23C++基础学习笔记——命名空间namespace用法

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详解

发布了25 篇原创文章 · 获赞 6 · 访问量 1426

猜你喜欢

转载自blog.csdn.net/weixin_43948991/article/details/102708901