百科问答小站 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++ 项目都是没有内存泄漏的么? 
  GCC 4 编译警告:warning: dereferencing type-punned pointer will break strict-aliasing rules 有什么比较好的解决办法? 
  C#调用C++DLL函数,一般怎么封装这个DLL? 
  Java 的开发效率究竟比 C++ 高在哪里? 
  c++ 程序运行时异常处理,怎么定位到出错代码行? 
  windows如何监控文件的修改? 
  c++ 为何开源库都要编译? 
  p是char类型指针,p[1]不是指向p[0]的下一个字节吗?为什么会到0x11? 
  想走虚幻引擎c++路线,c++是否应该大量学习算法? 
  vector 使用 emplace_back 会调用复制构造函数吗? 

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





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