【C++】命名空间

在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称都将作用于全局作用域中,可能会导致很多命名冲突。

使用命名空间的目的就是对标识符和名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

1、命名空间的定义

定义命名空间,需要使用到 namespace 关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

1.1 普通定义

//命名空间的普通定义
namespace N1 //N1为命名空间的名称
{
	//在命名空间中,既可以定义变量,也可以定义函数
	int a;
	int Add(int x, int y)
	{
		return x + y;
	}
}

1.2 嵌套定义

//命名空间的嵌套定义
namespace N1 //定义一个名为N1的命名空间
{
	int a;
	int b;
	namespace N2 //嵌套定义另一个名为N2的命名空间
	{
		int c;
		int d;
	}
}

1.3 同名空间

同一个工程中允许存在多个相同名称的命名空间,编译器最后会将其成员合成在同一个命名空间中,所以我们不能在相同名称的命名空间中定义两个相同名称的成员。

注意:一个命名空间就定义了一个新的作用域,命名空间中所有内容都局限于该命名空间中。

2、命名空间的使用

2.1 使用作用域限定符

符号“::”在C++中叫做作用域限定符,我们通过“命名空间名称::命名空间成员”便可以访问到命名空间中相应的成员。

//加命名空间名称及作用域限定符
#include <stdio.h>
namespace N
{
	int a;
	double b;
}
int main()
{
	N::a = 10;//将命名空间中的成员a赋值为10
	printf("%d\n", N::a);//打印命名空间中的成员a
	return 0;
}

2.2 使用using将命名空间成员引入

我们还可以通过“using 命名空间名称::命名空间成员”的方式将命名空间中指定的成员引入。这样一来,在该语句之后的代码中就可以直接使用引入的成员变量了。

//使用using将命名空间中的成员引入
#include <stdio.h>
namespace N
{
	int a;
	double b;
}
using N::a;//将命名空间中的成员a引入
int main()
{
	a = 10;//将命名空间中的成员a赋值为10
	printf("%d\n", a);//打印命名空间中的成员a
	return 0;
}

2.3 使用using namespace命名空间引入

最后一种方式就是通过”using namespace 命名空间名称“将命名空间中的全部成员引入。这样一来,在该语句之后的代码中就可以直接使用该命名空间内的全部成员了。

//使用using namespace 命名空间名称引入
#include <stdio.h>
namespace N
{
	int a;
	double b;
}
using namespace N;//将命名空间N的所有成员引入
int main()
{
	a = 10;//将命名空间中的成员a赋值为10
	printf("%d\n", a);//打印命名空间中的成员a
	return 0;
}
posted @   NotReferenced  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2023-07-30 【GCC】添加运行时库路径
2023-07-30 【GCC】添加动态库搜索路径
2023-07-30 【c】可变参数传递给另一个函数
点击右上角即可分享
微信分享提示