C++ using namespace std 详解
酷勤网 所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
一 :
<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
二:
所谓namespace,是指标识符的各种可见范围。
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下:
std::cout << std::hex << 3.4 << std::endl;
2、使用using关键字。
using std::cout;
using std::endl;
以上程序可以写成
cout << std::hex << 3.4 << endl;
3、最方便的就是使用using namespace std;
例如:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写:
cout << hex << 3.4 << endl;
因为标准库非常的庞大,所程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间std中。但这又会带来了一个新问题。无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。
所以就有了<iostream.h>和<iostream>等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。
命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h"
分享到:
相关推荐
C++ namespace 使用方法:把位于不同.cpp文件的变量打包在一个namespace下,在主函数中使用Namespace里面定义的变量。 使用方法:把下载的压缩文件解压到一个目录下
在使用的时候用如下的方式: N1.N2.A; N1.N2.B; 在一个NAMESPACE中,我们也可以用一个别名指代现有的NAMESPACE或是一些其他类型数据。 别名的使用格式如下: using 别名 = 一个已经存在的类型; ...
$ npm install postcss-selector-namespace 用法 var postcss = require ( 'postcss' ) var selectorNamespace = require ( 'postcss-selector-namespace' ) var output = postcss ( ) . use ( selectorNamespace ...
using命令(本例中两种方式,对于C++标准库命名空间std,在实际用到的标识符前面采用加std::的方式,对于自己命名空间myown1,2,则使用using myown1::B的方式)比使用using编译命令(using namespace std方式,本例中...
require 'redis-namespace'# => trueredis_connection = Redis . new# => #<Redis>namespaced_redis = Redis :: Namespace . new ( :ns , redis : redis_connection )# => #<Redis>namespaced_redis . set ( 'foo' ...
using namespace是使用命名空间 C++
使用include 时一定要加using namespace std
摘要:C#源码,综合实战,NameSpace使用 C#使用命名空间NameSpace的一个基础实例,以命令提示符控制台的形式显示出演示结果,挺基础的C#例子,使用using指令引入命名空间NameSpace,实例化NameSpace中的类,调用类中的...
c++程序namespace的使用.zip
namespace中文意思是命名空间或者叫名字空间,下面这篇文章主要给大家介绍了关于C++中名称空间namespace使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...
前端开源库-solid-namespace实体命名空间,实体项目中使用的公共RDF命名空间的集合
在某些第三方库中是有namespace的,因此我们在使用这些库的时,要确定是否使用using namespace来解除名字前缀。 使用 #include namespace XXX { class A { public: void test() { printf(this is namespace
关于Namespace(命名空间)的使用,我常用 代码如下:< % @ Import Namespace=”System.Data” %> ,这是在引用为我们提供的Namespace,这和ASP不同的,我们在ASP.net必须先引用与我们操作有关的Namespace后才能使用...
讨论在C + + 中如何使用名空间解决引用冲突,名空间的定义、使用以及标准名空间。
基于QT下的命名空间的接口与实现分离,最佳实战做法,推荐使用!!
ios的namespace的使用的源代码。ios的namespace的使用的源代码。
(4) 可以在namespace中使用using声明和using编译命令; (5) 未命名的namespace:其作用域为定义该namespace所在的声明区域。C++推荐用来替代static定义静态变量。 具体程序代码如下: #include using namespace ...
通俗理解:namespace就相当于是用来建一个目录,将namespace下面的代码放在该目录里面,与外面的区分开来。 /* |--------------------------------- |namespace示例 |@黑眼诗人 |--------------------------------...