命名空间
使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突
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。从而避免冲突。后续会进一步补充这里。