比较c语言和c++语言

C语言和C++语言有什么不同和相同,这里将一一细说

C++是从C语言发展过来的,所以C++是完全兼容C语言的语法。具体如下图:

但C还是一 门独立的语言,因为很多嵌入式都要用C语言编程,C语言还是有它自己的运用领域的。

C++中包含C
C++中包含C

 

编程方式:

C语言是过程式的编程,一个函数调用一个函数

C++语言是面向对象的编程语言,除了面向象方式,还有模板编程。

头文件:

C语言中所有的头文件都带后缀 .h(比如stdio.h)

C++中有系统提供的头文件不带后缀 .h,但用户自己编制的头文件可以有后缀 .h。

struct结构:

C语言中struct只是用来定义结构的,将单个类型组成一个新类型,方便编程。

C++语言中struct跟class类的功能是一样的,可以有访问控制符,可以有构造、析构、操作符重载等。与class类唯一区别在于,class默认访问控制符是prative私有的,struct默认访问控制符是public公有的。

函数重载:

C语言没有函数重载,所以每个函数名都要取不一样名字,取名就变成一件麻烦的事情。

C++语言有函数重载,函数如果重名,参数不一样就可以。比较好的解决同一功能有两个函数名问题。

分配内存:

C语言用malloc/free两个函数,

C++语言用操作符new/delete

从上面可以看出用new,比用malloc更方便,用malloc要自己计算内存大小,还要自己强制转换指针。用new分配内存可以更专注自己要解决的问题,而不用如而实现内存分配。

字符串:

C语言中的字符串都是char*,

C++语言中字符串可以用string类型

用string类型时会更方法,string有很多成员函数可以使用,更重要的是str是一个类类型,pstr是一个指针,相对来讲str会更安全。

命名空间:

C语言中没有命名字间,名字冲突解决办法就是不要取重名。

C++语言中有命名空间,用关键字namespace定义

关于bool类型:

C语言中只有C99版以后才有bool类型,有时用比较老的C编译器会发现bool类型是未定义,就是这个原因。C语言中bool类型定义头文件在<stdbool.h>

C++语言中bool是内置类型。

类型转换:

C语言都是强制类型转换,比如doubl转成int

C++语言转换可以用static_castdynamic_castconst_castreinterpret_cast

以上只是列举了一些区别,还有就没有一一列举出来。要说的是,C++语言编程是面向对象的,因为要兼容C语言所以也可以过程式编程。C++语言的每一次更新都将离C语言更远,C++应该会向面向对象、模板元编程、安全可靠、效率方向发展,而C语言应该会一直专注在硬体领域做到极致。