namespace

namespace

定义:命名空间为防止大型项目中的名称冲突提供了一种方法。

作用:在命名空间块内声明的符号被放置在命名作用域中,以防止它们被误认为是其他作用域中的同名符号。

允许多个具有相同名称的命名空间块。这些块中的所有声明都在命名范围中声明。

namespace定义语法:

note:命名空间中的变量可以执行初始化,不能直接执行赋值操作,赋值需要在命名空间的函数中。因为编译器不知道赋值操作的作用域。

  1. namespace后面没有跟变量名,是一个独特的命名空间,后面的程序中都能直接调用该命名空间的值。编译器会自动把该命名空间定义唯一标识名称。并且使用using指令,使得之后的程序能够访问该命名空间。
namespace {
    int tmp_a;
}

​ 2.namespace后面跟变量名,最常用的定义方法。

namespace aaron {
    int aaron_a;
}

​ 3.namespace前面加inline,类似于未命名命名空间(1)的隐式 using 指令,后面的程序中都能直接调用该命名空间的值。

inline namespace E {
    int e_a = 3;
}

namespace B {
    namespace C {
        int nest_a = 1;
    }
    inline namespace D {
        int nest_b = 2;
    }
    void func() {
        C::nest_a++;
        std::cout << C::nest_a << std::endl;    
    }
    void func2() {
        nest_b++;
        std::cout << nest_b << std::endl;   
    }   
}

namespace使用语法:

  1. 直接在其他作用域使用命名空间名::变量名
  2. 在其他作用域使用using 命名空间名::变量名,之后就可以直接使用该命名空间中的该变量名,变量名不用添加命名空间名::
  3. 在其他作用域使用using namespace 命名空间名,之后就可以直接使用该命名空间中的所有变量名,变量名不用添加命名空间名::

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top