zoukankan      html  css  js  c++  java
  • C++中的命名空间

    一,命名空间(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;
    }
  • 相关阅读:
    【杭电】[1874]畅通工程续
    【杭电】[2544]最短路
    【杭电】[1087]Super Jumping! Jumping! Jumping!
    【HPU】[1689]MZY寻宝
    【杭电】[1495]非常可乐
    【杭电】[1242]Rescue
    【杭电】[1787]GCD Again
    【算法】欧拉函数——小于n的数中与n互质数的数目
    【HPU】[1738]Stack ? Queue ?
    【HPU】[1737]老王特警队
  • 原文地址:https://www.cnblogs.com/metalsteel/p/6241901.html
Copyright © 2011-2022 走看看