命名空间的介绍和使用

目录

1.命名冲突

2.命名空间

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

2.命名空间可以嵌套

3.命名空间的使用方式


1.命名冲突

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

定义rand 变量

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

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

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

2.命名空间

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

原理:

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

namespace  +  名称  +  {  域 的 内容 }

#include<stdio.h>
#include<stdlib.h>

namespace yz
{
	int rand = 0;

}

int main()
{
	
	return 0;
}

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

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

#include<stdio.h>
#include<stdlib.h>

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<iostream>
using namespace std;

int main()
{
	return 0;
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值