c++ 命名空间namespace的使用

什么是namespace

namespace即“命名空间”,也称“名称空间” 。是许多编程语言使用的一种代码组织的形式,通过命名空间来分类,区别不同的代码功能,避免不同的代码片段(通常由不同的人协同工作或调用已有的代码片段)同时使用时由于不同代码间变量名相同而造成冲突。

通常来说,命名空间是唯一识别的一套名字,这样当对象来自不同的地方但是名字相同的时候就不会含糊不清了。使用扩展标记语言的时候,XML的命名空间是所有元素类别和属性的集合。元素类别和属性的名字是可以通过唯一XML命名空间来唯一。

namespace的作用

namespace(命名空间)在编程中,尤其是在C++、C#、PHP等语言中,是一个非常重要的概念。它的主要作用是为了解决在大型项目中可能出现的命名冲突问题,同时帮助组织和管理代码。以下是namespace的一些主要作用:

  1. 解决命名冲突
    • 在不同的库、模块或包中,可能会存在相同名称的函数、类、变量等。如果没有命名空间,这些名称将会产生冲突,导致编译或运行时错误。使用命名空间,可以将这些实体组织在不同的命名空间中,从而避免命名冲突。
  2. 组织代码
    • 命名空间可以将相关的代码组织在一起,形成逻辑上的分组。这有助于提高代码的可读性和可维护性。例如,一个公司可能有多个项目,每个项目都可以使用自己的命名空间来组织代码。
  3. 控制可见性
    • 通过使用命名空间,可以控制哪些实体(如类、函数等)在外部是可见的。这有助于隐藏内部实现细节,只暴露必要的接口给外部使用。
  4. 实现库的封装
    • 当开发一个库时,可以使用命名空间来封装库中的所有代码。这样,当其他开发者使用这个库时,只需要包含相应的命名空间,就可以访问库中的所有功能,而不需要关心库内部的实现细节。
  5. 代码重用
    • 通过命名空间,可以更容易地实现代码重用。例如,两个项目可能都需要使用某个通用的功能模块。只要这个功能模块被放置在一个命名空间中,并且两个项目都包含了这个命名空间,就可以实现代码的重用。
  6. 符合面向对象编程的原则
    • 命名空间提供了一种将相关代码组织在一起的机制,这符合面向对象编程中的封装和模块化的原则。通过将相关的代码封装在命名空间中,可以提高代码的可读性和可维护性。

namespace运行与讲解

1.利用命名空间,可以避免冲突的命名

利用namespace,::符号可以表示的区域的参数。

#include<iostream>
using namespace std;
namespace a{
  int a=10;
  int b=20;
 }

 int main(){
 	 int a=1,b=2;
 	cout<<a<<endl;
 	cout<<b<<endl;
 	cout<<a::a<<endl;//表示的是调用了namespace a的参数a
 	cout<<a::b<<endl;//表示的是调用了namespace a的参数b
 	return 0;
 }

运行结果

2.在namespace中可以运用嵌套

#include<iostream>
#include<algorithm>
using namespace std;
namespace a{
  int a=10;
  int b=20;
   namespace c{
    int a=100;
    int b=200;
   }
 }


 int main(){
 	 int a=1,b=2;
 	cout<<a<<endl;
 	cout<<b<<endl;

 	cout<<a::a<<endl;//这里是namespace 中a参数a
 	cout<<a::b<<endl;//这里是namespace 中a参数b

 	cout<<a::c::a<<endl;//这里是namespace 中a的嵌套的c中的参数a
 	cout<<a::c::b<<endl;//这里是namespace 中a的嵌套的c中的参数b
 	return 0;
 }

运行的结果:

3.namespace可以取别名

#include<iostream>
#include<algorithm>
using namespace std;
namespace a{
  int a=10;
  int b=20;
   namespace c{
    int a=100;
    int b=200;
   }
 }

 namespace a11=a;//进行赋值操作

 int main(){
 	 int a=1,b=2;
 	cout<<a<<endl;
 	cout<<b<<endl;
 	
 	cout<<a::a<<endl;
 	cout<<a::b<<endl;
 	
 	cout<<a::c::a<<endl;//这里是namespace 中a的嵌套的c中的参数a
 	cout<<a::c::b<<endl;//这里是namespace 中a的嵌套的c中的参数a
 	
 	cout<<a11::a<<endl;
 	cout<<a11::b<<endl;
 	cout<<a11::c::a<<endl;
 	cout<<a11::c::b<<endl;
 
 	return 0;
 }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值