什么是“使用命名空间std;”,为什么我需要它来使用最新的C ++编译器编译程序?

darla_sud

什么是using namespace std;近年来C ++?

在旧的编译器(例如Turbo C ++)中,似乎不支持此功能,因为它会导致编译器错误。在最新的C ++编译器中,这是编译和运行程序的唯一方法。

乔纳森·韦克利(Jonathan Wakely)

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;
}

名称allocatorchar_traitsbasic_string并且string都在命名空间中声明std,所以包括报头之后,你需要把它们称为std::string等等。

另外,您也可以使用using指令,例如using namespace std,使命名空间std中的所有名称在当前作用域中都可用,因此在using指令之后,您可以说string而不是std::string

古老的TurboC ++编译器不遵循该标准,因此其标准库只是将名称放在全局名称空间中,因此您必须引用string不该名称,std::string并且不能使用using指令。第一个C ++标准是在1998年发布的,因此您不应该在2013年使用标准前的编译器,这将不是一个有价值的知识。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

makefile 使用 Mac 中的编译程序和它在其中使用的交叉编译器标志。如果我不使用交叉编译器,它们的含义和替代 4 标志

为什么要编译程序?

C编译器错误或程序错误?

C程序的“正确编译器”命令

在C ++编译器中编译C程序

CMake:C编译器无法编译简单的测试程序

使用this-keyword编译程序

如何使用GEOS库编译程序

为什么在新的IDE中必须使用命名空间std,而用Turbo C ++ / Borland C ++编写的程序却不需要命名空间std?

为什么需要C ++编译器来编译Rust?

角度编译器“编译”什么?

为什么Linux编译程序无法在Windows上运行

为什么编译器与继承中的命名空间冲突

为什么要为C和C ++使用gcc和g ++编译器驱动程序

什么是基准编译器?

什么是生产编译器?

语言编译器是否使用复杂的DFA接受程序?

使用新建的编译器在Eclipse中调试程序

C-使用libcurl的Cmake编译程序

为什么在编译朋友程序集时编译器需要程序集文件名?

使用哪个编译器?

在Linux服务器上编译C ++程序时Intel编译器的语法

为什么我的C程序在不同的编译器中给出不同的输出?

在OpenCV上。C ++编译器无法编译简单的测试程序。使用Clang ++

在Mac上使用gcc编译器编译c ++ SDL2程序

使用 MinGW 编译器编译 C++ 程序时如何增加堆栈大小

使用g ++编译器在Visual Studio中编译C ++程序会在最后生成%

C ++编译器17

Linux C编译器