• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++中的命名空间

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一,命名空间(namespace)的基本概念以及由来

1.什么是标识符:

  在C++中,标识符可以是基本的变量,类,对象,结构体,函数,枚举,宏等。

2.什么是命名空间:

  所谓的命名空间是指标识符的可见范围。C++标准库中的所有的标识符都被定义在一个名为std的命名空间中。

3.C语言的命名空间:

  在C语言中只有一个全局作用域,因此在C语言中所有的标识符共享一个命名空间,因此随着代码量的增大,标识符之间可能会重名。由此会造成一些命名问题。

4.针对C语言的问题,在C++中提出了命名空间的概念:

  1.命名空间将全局作用域划分成不同的的部分。

  2.不同的命名空间中的标识符可以重名而不会发生冲突。

  3.全局作用域也叫做默认命名空间。

  4.命名空间之间可以相互嵌套。

二,命名空间(namespace)的定义以及使用

1.命名空间的定义:

namespace 命名空间名称
{
    ......
}

2.命名空间的使用:

using namespace name; // 使用name这个命名空间
using namespace name::variable; // 使用name这个命名空间下的variable
std::cout << "Hello,NameSpace" << std::endl; // 直接使用这个命名空间中的标识符
::tmp = 0; // 使用默认命名空间的变量,默认情况下可以直接使用默认命名空间的所有标识符

3.域作用符::

  域作用符用两个冒号(::)表示,用来访问命名空间下的标识符。

三,命名空间(namespace)实际案例

# include<iostream>

/* 定义命名空间n1 */
namespace n1
{
    /* 定义学生类 */
    class Student
    {
    public:
        char name[64];
        int    age;
    };
    /* 定义函数 */
    void printN1()
    {
        std::cout << "我是n1命名空间的printN1()" << std::endl;
    }
    /* 定义命名空间n2 */
    namespace n2
    {
        /* 定义变量n */
        int n = 0;
    }
}

// 在默认命名空间下定义变量a
int a = 100;

int main()
{
    // 使用命名空间n1,曝光n1的所有标识符,因此可以调用printN1()函数
    using namespace n1;
    printN1();
    // 使用命名空间n2,曝光n2的所有标识符,因此可以使用变量n
    using namespace n1::n2;
    // 直接使用指定命名空间下的标识符
    std::cout << n << std::endl;
    // 使用域作用符访问默认命名空间下的标识符
    ::a = -100;
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap