关于 C++ 标准库的命名空间


因为C++标准库非常庞大,所以程序员在选择类名或函数名时就很有可能和标准库的某个名字相同。

为了避免这种情况所造成的名字冲突,C++就把标准库中的一切都放到名字空间std中。但这又会带来一个新的问题,无数原有的C代码都依赖于使用了多年的伪标准库中的功能,而他们又都是全局空间下的。

于是就有了 <iostream.h><iostream> 等等这样的头文件。前者是为了兼容以前的C代码,后者是为了支持新的C++标准。

名字空间本质上就是一个作用域,也是为了方便不同的程序在不同的平台上正确地运行(加强程序的可移植性)而引入的。

一般而言,下面三个程序是等价的:

#include<iostream.h>
void main()
{ ...
  cin>>...
  cout<<...
}
#include<iostream>
void main()
{ ...
  std::cin>>...
  std::cout<<...
}
#include<iostream>
using namespace std;   //using是一个指示符
void main()
{ ...
  cin>>...
  cout<<...
}

但是在新的C++标准下,更推荐使用后两者

而且若较多地使用标准库写大程序时,最后一种形式比较方便,毕竟using namespace std;在同一个程序中仅需要写一次就足矣说明所引用的标准库函数都来自名字空间std。

但如果不常用标准库(这不推荐,会降低移植性)或者小程序时,第二种形式也比较好。

第一种形式常用于不同运行平台间的程序移植,虽然语法没有错误,但不推荐用于写新程序。


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
 上一篇
C++ 之父写的桌面计算器:看看大师的功力吧 C++ 之父写的桌面计算器:看看大师的功力吧
这是 《The C++ Programming Language》 第六章函数的一个例子。 例子中没有高深的算法,都是c++中最常用的语法现象,但是这150行程序里蕴含的功力极深(至少我达不
2010-11-17
下一篇 
C++ 风格的几种 IO 流 C++ 风格的几种 IO 流
本文介绍的三个IO函数(stringstream、ostringstream、istringstream)均在头文件<sstream>中 stringstream可以说 stringstream 是 ostringstrea
2010-11-03
  目录