C/C++区别

来源:互联网 发布:淘宝卖家账号多少钱 编辑:程序博客网 时间:2024/04/30 20:50

自打学习计算机,学习了C、C++语言,一直没有仔细区分这两种语言。我总是说我会C、C++,一直说我更喜欢C++(主要因为面向对象的设计带来的灵活性)。最近,写了简单的blog内存查看器。我才从头意识到我以前用得更多的是C++,更熟悉的是C++。近期用得最多的是C,因此,有必要重新梳理一下二者的区别。
C和C++有各自的标准委员会,针对C、C++标准,不同的编译器厂商可以有不同的实现,提供不同的类库(或者说附加其他的库,或者源代码)。典型的编译器有GCC,G++,有Microsoft实现的编译器等等,这些编译器在具体实现上和附带的类库上是有一些区别的。举例说,STL是C++标准的一部分,是一个源代码级别的重用,Microsoft提供了一种实现,STL PORT也提供了一种实现,只要符合标准,就可以通用,还可以提供标准更强大的功能。
C语言是结构化语言,它的重点在于算法和数据结构,它的接口设计不像C++中那么复杂。
C++,一开始就有抽象和设计的概念,如何设计类、对象和它们之间的接口,数据结构和算法可以在这之后再考虑。
所以C与C++的最大区别在于它们用于解决问题的思想方法不一样。我从不想区分孰优孰劣,算法和数据结构其实是所有程序语言的基础。C语言的代码要十分小心,由于少异常处理等机制,内存处理出错,很容易挂掉。C++在这方面就要灵活得多。
C++ 标准库包含了三个部分:C 标准库的 C++ 版本;C++ IO 库;C++ STL.
C 标准库的 C++ 版本,相对于标准C有所加强,引入了重载、内联函数、异常处理等等。如果标准C中头文件是 “.h” 则 C++中是 “c” ;C++ 98 STD 版本的标准库头文件一概没有 .h 后缀,几乎所有内容都加入了 namespace std。 有一个特殊情况,标准C里有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数,基于char*的字符串处理,这个头文件跟C++的string类半点关系也没有,所以C++中的”string”并非C中”string.h”的“C++版本”,他们是毫无关系的两个头文件;而”cstring”才与C标准库的”string.h”相对应。
IO 库最常用的 HEADER 是 “IOSTREAM” 头文件 , 旧的C++头文件名如”iostream.h”将会继续被支持,这些头文件的内容不在名字空间std 中。新的C++头文件如”iostream”包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std 中。(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。)标准C 头文件如”stdio.h”继续被支持,其内容不在std 中, 其对应的C++头文件是”cstdio”,包含在std 中。
前面提到STL是一个标准,可以有不同实现,事实上Microsoft,STLPort等提供了不同实现,它是源代码级别的复用,STL主要包括容器类(vector, list, set, map, …),function, algorithm, iterator 等.

0 0