命名空间的 using 声明

使用 using 声明可以在不需要加前缀 namespace_name:: 的情况下访问命名空间中的名字。using 声明的形式如下:

using namespace::name;

一旦使用了 using 声明,我们就可以直接引用名字,而不需要再引用该名字的命名空间。

#include <string>
#include <iostream>
// using declarations states our intent to use these names from the
namespace std
using std::cin;
using std::string;
int main()
{
string s; // ok: string is now a synonym for std::string
cin >> s; // ok: cin is now a synonym for std::cin
cout << s; // error: no using declaration; we must use full
name
std::cout << s; // ok: explicitly use cout from namepsace std
}

没有 using 声明,而直接使用命名空间中名字的未限定版本是错误的,尽管有些编译器也许无法检测出这种错误。

每个名字都需要一个 using 声明

一个 using 声明一次只能作用于一个命名空间成员。using 声明可用来明确指定在程序中用到的命名空间中的名字,如果希望使用 std(或其他的命名空间)中的几个名字,则必须为要用到的每个名字都提供一个 using 声明。

头文件中不应包含using声明

位于头文件中的代码,一般来说不应该使用using声明。这是因为头文件的内容会拷贝到所有引用它的文件中去,如果头文件里有某个using声明,那么每个使用该头文件的文件都会有这个声明,对于某些程序来说,由于不经意间包含了一些名字反而可能会产生始料未及的名字冲突。

posted @ 2018-04-27 16:01  刘-皇叔  阅读(1216)  评论(0编辑  收藏  举报