命名空间的介绍和使用

命名空间的介绍和使用,第1张

目录

1.命名冲突

2.命名空间

1. 命名空间可以定义 变量,函数,类型

2.命名空间可以嵌套

3.命名空间的使用方式


1.命名冲突

在C语言中,我们自己定义的变量,函数可能会和库中重名冲突。

定义rand 变量

 rand 和 stdlib.h所包含的库中的命名存在冲突。

这个时候,我们就不得不让步,修改自己的变量,函数名称,但是在以后我们需要多人合作写项目时,出现命名冲突再选择修改自己的命名就显得不太合适,C语言没有办法很好的解决这个问题。

C++中,有一个新的语法——命名空间

2.命名空间

使用namespace 定义一个命名空间 ——域

原理:

命名空间影响的是作用域,比如,全局变量,使用时会在全局域中查找,局部变量,使用时会在局部域中查找,将变量放入命名空间后,使用时,会直接在命名空间这个域中查找,与其他的作用域隔离开,以此来解决命名冲突。

namespace  +  名称  +  {  域 的 内容 }

#include
#include

namespace yz
{
	int rand = 0;

}

int main()
{
	
	return 0;
}

我们定义了一个 叫 yz 的命名空间,此时在命名空间中定义函数,就不用担心命名冲突的问题了。

在命名空间中定义的变量它的使用也要通过命名空间

#include
#include

namespace yz
{
	int rand = 0;

}

int main()
{
	printf("%d", yz ::rand);
	return 0;
}

即命名空间的名称后 加上域 *** 作符 :: (两个冒号),再加上变量名即可。

1. 命名空间可以定义 变量,函数,类型
namespace yz
{
	int rand = 0;

	int ADD(int x, int y)
	{
		return x + y;
	}
	struct N1
	{
		int* a;
		double b;
	};

}
2.命名空间可以嵌套
namespace yz
{
	int rand = 0;

	namespace yz1
	{
		int ADD(int x, int y)
		{
			return x + y;
		}
		struct N1
		{
			int* a;
			double b;
		};
	}

}

我们需要注意的是,同一个工程中允许存在多个相同名称的命名空间,编译器最后会把它合并成一个命名空间中。比如我们在头文件(.h)和 源文件(.cpp)中,都使用了相同的命名空间,编译时,会把它们合并成同一个命名空间。

3.命名空间的使用方式

1. 空间名称加作用域限定符


int main()
{
	printf("%d", yz::rand);
	
	return 0;
}

指定查找的作用域,命名隔离的效果最好,但是有一些不方便。

2.使用using将命名空间中的某个成员引入

using yz::b;

int main()
{
	printf("%d", yz::rand);

	printf("%f", b);
	return 0;
}

这是我们以后常用的用于展开命名空间

3.使用using namespace 命名空间名称 引入

using namespace yz;

int main()
{
	printf("%d", yz::rand);

	printf("%f", b);

	ADD(10, 100);
	return 0;
}

将命名空间全部展开,但是隔离失效了,不是很推荐。

我们常见的C++文件开头

#include
using namespace std;

int main()
{
	return 0;
}

由于C++ 库的实现 定义在 一个叫 std的命名空间中,我们在自己练习编程时,为了方便可以直接将命名空间全部展开,但是如果做一些较大的项目 就不太推荐使用这种命名空间的使用方式。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/2991788.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存