无名namespace

在一个名字空间里包含一系列的声明以便简单的保证有可能发生的名字冲突是非常有用的。也就是说,名字空间的目的就是保证代码的本地化而不是给用户提供接口。例如:
#include “cizi.h”
namespace CIZI{
int a;
void f() {}
int g() {}
}

既然我们不想让名字CIZI在本文件以外被知道,那么就没有必要创建一个多余的全局名字,并且这个全局名字CIZI有可能会和其他文件的名字发生冲突。在这种情况下,我们可以简单的使得这个名字空间没有名字。
#include “cizi.h”
namespace {
int a;
void f() {}
int g() {}
}

很明显,这里必定有一些方法可以访问这个没有命名的名字空间的成员。因此,没有名字的名字空间可以通过using-directive来访问,也就是说上边这个没有名字的名字空间可以和下边的定义一样。
namespace

$inta;voidf()intg()usingnamespace
; $$就是和合这个没有名字的名字空间唯一对应的名字。in particular,没有名字的名字空间,在不同的文件里是不同的。如我们希望的那样,没有任何方法可以访问其他translation unit里边的没有名字的名字空间的成员。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值