C/C++中命名空间(namespace)详解及其作用介绍

  概述

  命名空间 (namespace) 可以帮助我们区分不同库中相同名称的函数, 类, 变量等. 使用了命名空间即定义了上下文. 命名空间就是定义了一个范围.

  命名空间

  为了解决 C++ 标准库中的标识符与程序中的全局标识符之间以及不同库中的所有标识符之间的命名冲突. 标准 C++ 库的所有标识符都定义在一个名为 std 的命名空间中. 在程序中用到 C++ 标准库时, 使用 std 作为限定.

  我们在写 “Hello World” 的时候就曾用到过命名空间 (namespace):

  命名空间的作用

  命名空间是 ANSI C++ 引入可以由用户命名的作用域, 用来处理程序中常见的同名冲突. 在 C++ 程序中, 有大量的变量, 函数和类名. 如果他们都存在于同一个全局命名空间中, 会导致很多冲突.

  命名空间的机制, 对于声明于其中的名称都进行了本地化:

  自定义命名空间

  我们可以自己定义命名空间. 我们把一些全局分别放在各个名字空间, 从而与其他全局实体分隔开来.

  格式:

  namespace 命名空间名 {

  声明;

  }

  命名空间的作用是建立一些互相分隔的作用域. 把一些全局实体分隔开来, 以免产生名字冲突.

  命名空间成员的方法

  一般方法: 引用命名空间成员时, 用命名空间名对名命名空间成员进行限定, 以区别同名标识符. (命名空间::命名空间成员名)

  简化使用命名空间成员的机制:

  案例

  h1.h:

  #ifndef PROJECT8_H1_H

  #define PROJECT8_H1_H

  namespace kitchen {

  class Table {

  private:

  int legs;

  int price;

  public:

  Table(int l, int p){

  legs = l;

  price = p;

  }

  };

  }

  #endif //PROJECT8_H1_H

  h2.h:

  #ifndef PROJECT8_H2_H

  #define PROJECT8_H2_H

  namespace office {

  class Table {

  private:

  int rows;

  int cols;

  public:

  Table(int r, int c){

  rows = r;

  cols = c;

  }

  };

  }

  #endif //PROJECT8_H2_H

  mian.cpp:

  #include

  #include "h1.h"

  #include "h2.h"

  using namespace std;

  int main() {

  kitchen::Table t1(6, 300);

  office::Table t2(6, 2);

  return 0;

  }

  到此这篇关于C/C++中命名空间(namespace)详解及其作用介绍的文章就介绍到这了,更多相关C++命名空间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  您可能感兴趣的文章: