百科问答小站 logo
百科问答小站 font logo



C++,为什么有了include<iostream>,还需要using namespace std呢? 第1页

  

user avatar   pansz 网友的相关建议: 
      

一个比较简单的答案:因为 C++ STL 标准库比 C++ 语言诞生得更晚

C++编程语言在 1985 年诞生。而STL标准库的草案在 1992 年才成型。两者相隔了整整七年的时间。

C++ 标准库引入了大量的新的名称。如果这些名称是在 C++ 这门语言诞生之时就存在,那么,C++ 代码撰写者就基本不会使用这些名称来定义自己的标识符。

然而,七年间,全世界的程序员们围绕 C++ 语言开发了大量的代码,这些代码有很大数量已经用到了将来 STL 库使用的标识符。

那么,在这之后推出 STL 标准库,就会遇到很多重名方面的问题。所以最后就统一把所有 STL 库的内容用 std 这个 namespace 包起来。


有的同学可能会提出质疑,iostream 是在 STL 之前就诞生了,为什么 iostream 也要放进 std ?

事实上,在当初还没有标准库的时候,iostream 库真就是直接用的。不需要加 std 。那时候的标准用法还是 #include <iostream.h> 如果你这样用,那就确实不需要加 std 。

后来有了 STL 之后,为了统一起见,就把 iostream 库也放进了 std,写法也去掉了后缀成为 #include <iostream>。

但如果你还需要兼容旧有代码,如果你的代码是在还没有发明 std namepsace 之前撰写的,那可以使用 #include <iostream.h> 这种带后缀的形式,这种形式是不需要加 std 的。




  

相关话题

  C++工程中的目录有何意义? 
  精通 C++ 是种怎样的体验? 
  C++ 无法取代 C 吗? 
  如何评价Qt6弃用qmake,全面转向CMake? 
  为什么没有新的支持底层达到类似C++这种程度,而易用性达到C#的语言出现? 
  写 C C++ 语言时候,如果每次申请内存就把 Free 内存的代码写上,是否能有效避免内存泄漏? 
  c++ 中明明有vector了为什么还要有stack? 
  c++怎么在1到n这些数中随机产生k(k<n)个?当然,k个数互不相等。有什么比较好的写法吗? 
  c++ 为何开源库都要编译? 
  如何用 C++ 从零编写 GUI? 

前一个讨论
现在回想起来,“没有废物的武魂,只有废物的魂师”这句话,真的是对的吗?
下一个讨论
如何评价 12 月 27 号 7999 元预售的联想拯救者 R9000P?





© 2025-05-06 - tinynew.org. All Rights Reserved.
© 2025-05-06 - tinynew.org. 保留所有权利