名字空间

1.名字空间

1.为什么需要名字空间?

1)划分逻辑单元,改善程序的可读性和可维护性。
2)避免名字冲突。

2.什么是名字空间?

1)定义
namespace 名字空间名 { ... }
2)合并
同名名字空间,无论是在一个源文件中,还是分布于不同的源文件中,编译器都会把它们合并到一个名字空间中。
3)声明和定义可以分开
定义语句必须带有作用域限定。

namespace ns {
    extern int x;
    void foo (void);
}
int ns::x = 100;
void ns::foo (void) { ... }

3.怎样使用名字空间

1)作用域限定符

cout << ns::x << endl;
ns::foo ();

2)名字空间指令

using namespace ns; // 使ns中的标识符在以下代码中可见
cout << x << endl;
foo ();

只有在不发生名字冲突的前提下,才可以使用这种语法。
3)名字空间声明

using ns::x; // 将ns中的x引入当前作用域中
cout << x << endl;

只有在不发生名字冲突的前提下,才可以使用这种语法。

4.无名(匿名)名字空间

1)不属于任何有名名字空间的标识符,会被编译器自动地放入一个无名名字空间中。
2)对无名名字空间成员的访问:直接在该成员名前面使用“::”。

5.名字空间嵌套和别名

1)多层名字空间

namespace ns1 {
    namespace ns2 {
        namespace ns3 {
            int x;
            void foo (void) { ... }
        }
    }
}

2)访问内层名字空间的成员

cout << ns1::ns2::ns3::x << endl;
using namespace ns1::ns2::ns3;
foo ();

3)名字空间别名

namespace ns123 = ns1::ns2::ns3;
cout << ns123::x << endl;
ns123::foo ();

注意:

1)名字空间结束后无需分号。

2)名字空间可以在全局作用域内,也可以在其它名字空间中,但不能在函数或类的定义中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值