C++名称空间(namespace)

本文介绍了C++中的名称空间(namespace)概念,旨在解决名称冲突问题。通过示例解释了如何创建和使用名称空间,特别是using声明和using编译指令的差异。同时,讨论了嵌套名称空间、未命名名称空间以及与标准库std的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

当随着C++项目项目的增大,名称相互冲突的可能性也将增加。使用多个厂商的类库时,可能导致名称冲突。例如,两个类库可能都定义了名为List, Tree和Node的类,但定义的方式不兼容。用户希望使用其中一个库的List类,而使用另一个库的Tree类。这种冲突就被称为名称空间问题。

A demo for namespace

namespace Jack {
    double pail;  // 变量声明
    void fetch;   // 函数原型
    int pal;    // 变量声明
    struct Well { ... };  // 结构体声明
}

创建名称空间的关键字是namespace,但是需要注意:

  • 名称空间可以是全局的,也可以位于另一个名称空间中(名称空间的嵌套),但是不能位于代码块中。因此,在默认情况下,在名称空间中声明的名称的链接性为外部的。
  • 除了用户自己定义的名称空间外,还存在一个全局名称空间(global namespace)。它对应于文件级声明区域,因此前面所说的全局变量现在被描述为位于全局名称空间中。
  • 任何名称空间中的名称都不会与其它名称空间中的名称发生冲突。
  • 名称空间是开放的(open),即可以把名称加入到已有的名称空间中。例如,下面的代码可以将名称goose加入到Jack已有的名称列表中:
    namespace Jack {
        char * goose(const char *);
    }<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值