第三章 3.1 命名空间

命名空间

  • 使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突

  • C++标准程序库中的所有标识符都属于命名空间std

  • 使用std中的库函数时需要using声明

  • std::cin 表示编译器应该从左边的命名空间中寻找cin这一库函数

  • 声明格式 using namespace::name。
    书上的声明方法虽然繁琐,但是可以避免命名冲突,一般的做法是用using namespace::std
    (makedown用两个星号包裹文字是加粗,一个星号是斜体)

  • 但是需要注意的是,using namespace::std会将所有命名空间里的所有名称导出,如果放在.h中,可能会与局部名称冲突。

一般说来,使用using命令比使用using编译命令更安全,这是由于它只导入了制定的名称。如果该名称与局部名称发生冲突,编译器将发出指示。using编译命令导入所有的名称,包括可能并不需要的名称。如果与局部名称发生冲突,则局部名称将覆盖名称空间版本,而编译器并不会发出警告。另外,名称空间的开放性意味着名称空间的名称可能分散在多个地方,这使得难以准确知道添加了哪些名称。

  • 所以一个能平衡洁癖和效率的方法是只在cpp文件里面using namespace

  • 第18章 第二节专门讲了命名空间的创建,可以自己建一个命名空间,包含std。从而避免冲突。后续会进一步补充这里。

你可能感兴趣的:(第三章 3.1 命名空间)