名空间的重认识

前些日子学习C++的时候,看到了第一个“Hello world!"的小程序。

然后对在包含头文件下面的using namespace std;感到困惑,但又没有去详细了解名空间的作用,也没有去深入探讨到底有多少个不同的名空间,于是也有样学样的在自己写的代码里面加上using namespace std; 。今天晚上翻南郁老师的白话C++,看到第三章的时候,就顺手google了一个名空间的使用,都贴到这里来吧。免得以后需要但又忘记的时候又要google了。

 

C++ 提供了名空间技术来解决大型软件开发 中容易出现的类,变量或函数同名问题.(这里的同名可能是跟标准库或者第三方库或本项目各模块同名使得无法编译之类的情况发生)
如何使用名空间,你可以使用namespace定义一个名空间,然后在该空间里面定义C++的类,变量和函数,形如下形式:
namespace 名空间名{
//TODO:
}
下面的程序就用上面的形式声明了NS1和NS2名空间并在其中定义了同名的两个变量a,问题的时候只要形如这样的代码”名空间名::变量名”(访问类和函数也如此)就可以了.
#include <stdio.h>
namespace NS1{
       int a=1;
}
namespace NS2{
       int a=2;
}
int main(void){
       printf("NS1::a %d/n", NS1::a);
       printf("NS2::a %d/n", NS2::a);
       return 0;
}
运行结果:
NS1::a 1
NS2::a 2
当然如果你在名空间内部定义大量的C++类,变量和函数的话,我们不可能每次都在前面加”名空间名::”,C++里面有using指令来表示后面代码中的类,变量和函数来默认添加前缀名空间名,形如这样的代码:
using namespace 名空间名;
using 名空间名::类名;
using 名空间名::变量名;
using 名空间名::函数名;
下面的程序展示了使用using指令的例子
#include <stdio.h>
namespace NS3{
       int i=1;
       int j=2;
}
int main(void){
       using namespace NS3;
       i=j+10;
       j=20;
       printf("NS3::i %d/n", i);
       printf("NS3::j %d/n", j);
       return 0;
}
运行结果:
NS3::i 12
NS3::j 20
注意:如果多次使用using namespace名空间应确保,这几个名空间里面没有同名冲突,否则将导致无法编译.
C++ 标准库的所有标识符都定义在std名空间里面。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值