什么是using namespace std;
近年来C ++?
在旧的编译器(例如Turbo C ++)中,似乎不支持此功能,因为它会导致编译器错误。在最新的C ++编译器中,这是编译和运行程序的唯一方法。
C ++使用“命名空间”对相关的类和函数进行分组。C ++标准库几乎完全定义在一个名为std
(“ standard”的缩写)的命名空间中。当您#include
的标准标头<string>
包含如下定义时:
namespace std
{
template<typename T>
class allocator;
template<typename Ch>
class char_traits
{
// ...
};
template<typename Ch, typename Traits = char_traits<Ch>, typename Alloc = allcoator<Ch>>
class basic_string
{
// ...
};
typedef basic_string<char, char_traits<char>, allocator<char> > string;
}
名称allocator
,char_traits
,basic_string
并且string
都在命名空间中声明std
,所以包括报头之后,你需要把它们称为std::string
等等。
另外,您也可以使用using指令,例如using namespace std
,使命名空间std
中的所有名称在当前作用域中都可用,因此在using指令之后,您可以说string
而不是std::string
。
古老的TurboC ++编译器不遵循该标准,因此其标准库只是将名称放在全局名称空间中,因此您必须引用string
不该名称,std::string
并且不能使用using指令。第一个C ++标准是在1998年发布的,因此您不应该在2013年使用标准前的编译器,这将不是一个有价值的知识。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句