百科问答小站 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++11 的六种 memory order? 
  C++笔试算法题允许用stl函数吗? 
  如何学习递归呢? 
  学校和机构都建议孩子放弃 Python 转 C++,我该如何处理? 
  Windows C++如何直接写分区表? 
  如何理解 C++11 的六种 memory order? 
  对同一个套接字,在两个线程中都对其调用recv函数,需要对其互斥保护吗? 
  如何优雅地利用c++编程从1乘到20? 
  游戏程序员必须要修 C# 吗?我徘徊在先开始 C++ 还是 C# ? 
  C++开发只能去大厂吗? 

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





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利