永远不会被和谐的C++代码简单说明

开发 后端
无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的,也为了正确使用命名空间,规定头文件不使用后缀.h。

Visual C++ 6.0就是微软公司推出的C++代码开发工具,是使用最广的开发工具。本节介绍Visual C++ 6.0工具的开发环境和开发流程,看完本文你肯定有不少收获,希望本文能教会你更多东西。

后缀为.h的头文件C++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。

因此,当使用时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。#t#

一般一个C++代码的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。   

问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数,比如楼主提到的strcmp。  
这个头文件跟C++的string类半点关系也没有,所以 并非 的“升级版本”,他们是毫无关系的两个头文件。

要达到楼主的目的,比如同时:

  1. void func(){  
  2.  
  3. using namespace alex;//using指令  
  4.  
  5. using chris::love;//uisng声明  
  6.  
  7. love();//chirs::love();  
  8.  
  9. alex::love();//必须这么使用  
  10.  

因为标准库非常的庞大,所程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间std中。但这又会带来了一个新问题。无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。 

所以就有了等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。 C++标准库中所有的标志府都被定义在一个名字空间std中,iostream也是标准库中的头文件,你查看一下include目录,会发现又两个头文件iostream.h和iostream,其中iostream.h是C++以前的库,iostream是在名字空间std中的库,所以当你包含头文件并想使用头文件中的标志符的时候有两种方法。

责任编辑:chenqingxiang 来源: CSDN
相关推荐

2009-09-01 17:59:36

C#泛型的作用

2010-06-18 17:13:07

Linux anacr

2010-06-13 15:10:19

Linux 查看进程

2010-09-17 14:54:29

常用网络协议

2009-12-28 17:12:38

Fedora Foru

2010-06-18 10:11:16

Linux Accep

2009-06-18 12:14:47

javascript 函数

2010-06-21 16:02:35

Linux ar命令

2020-09-24 10:50:23

人工智能

2009-12-24 16:21:04

Fedora core

2010-01-19 09:54:19

C++代码

2010-01-26 10:42:26

C++函数

2009-11-30 11:25:24

VS2003 UNIC

2010-01-28 13:27:12

C++类定义

2010-01-28 11:08:09

C++变量

2010-01-19 13:43:59

C++函数

2010-01-08 17:06:52

C++代码

2010-01-13 13:27:00

C++优化

2010-01-11 15:47:37

C++编译

2010-01-14 17:42:47

CC++
点赞
收藏

51CTO技术栈公众号