C与C++的区别,以及各自优缺点

C与C++的区别,以及各自优缺点

C&C++的区别

1) C 是面向过程的语言,而 C++是面向对象的语言。

2) C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还有 new/delete 关键字。

3) 接下来就不得不谈到 C 中的 struct 和 C++的类,C++的类是 C 所没有的,但是 C 中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使struct 在 C++中可以和 class 一样当做类使用,而唯一和 class 不同的地方在于 struct的成员默认访问修饰符是public,而class默认的是private。

4) C++支持函数重载,而C不支持函数重载,而C++支持重载的依仗就在于C++的名字修饰与C不同,例如在C++中函数int fun(int ,int)经过名字修饰之后变为 _fun_int_int ,而C是 _fun,一般是这样的,所以C++才会支持不同的参数调用不同的函数。

5) C++中有引用,而C没有。

6) 当然还有C++全部变量的默认链接属性是外链接,而C是内链接。

7) C 中用const修饰的变量不可以用在定义数组时的大小,但是C++用const修饰的变量可以(如果不进行&,解引用*的操作的话,是存放在符号表的,不开辟内存);

8) 当然还有局部变量的声明规则不同,多态,C++特有输入输出流之类等等。

C语言的优点:

1、出色的移植性

2、访问硬件

3、运行效率高注:所有的操作系统的内核都是用C语言实现的

C语言的缺点:

1、扩展性差

2、复用性差

3、可维护性差

C++的优点:

1、扩展性好

2、复用性好

3、可维护性好

C语言+面向对象方法论:

1. objectivec 2. c++

C++支持的编程规范:过程式、数据抽象、基于对象、面向对象式、函数式、泛型形式、模板元形式、值语义与对象语义值语义可以拷贝与赋值,对象语义不可以进行拷贝和赋值

声明定义:

C++中强调语言的“实用性”,所有的变量都可以在需要的使用时再定义; C语言中的都必须再作用域开始的位置定义;

Register:被register修饰的变量叫做寄存器变量.

使用寄存器变量的注意点:

1.待声明的寄存器变量类型是CPU寄存器所能接受的类型,意味着寄存器变量是单个变量,变量长度应该小于寄存器长度。 2.不能对寄存器变量使用取地址符&,因为该变量是没有内存地址的; 3.尽量在大量频繁操作的时候使用寄存器变量,并且声明的寄存器变量个数尽可能的少。 4.Register关键字请求“编译器”将局部变量存储于寄存器中

5.C语言中是无法取得register变量的地址;

6.C++依然支持register关键字 7.C++编译器有自己的优化方式,不使用register也可能做优化; 8.C++中可以取得register变量的地址;

9.C++编辑器发现程序中需要取register变量的地址时,register对变量的声明变得无效;

Const

C++编辑器对const常量的处理:

1.当碰见常量声明时在符号表中放入常量; 2.编译过程中若发现使用常量则直接以符号表中的值替换; 3.编译过程中若发现对const使用了extern或者&操作符时,则给对应的常量分配存储空间注意:C++编译器虽然可能为const常量分配空间,但是不会使用其存储空间中的值;

动态内存分配

C++中的动态内存分配: 1.C++中通过new关键字来进行动态内存申请 2.C++中的动态内存申请是基于类型进行的 3.Delete关键字是用于内存释放的变量申请与删除:

Type*pointer=newType;delete pointer;

数组申请与删除:

Type*pointer=newType[N];delete[]pointer;

New关键字与malloc函数的区别

1.New关键字是C++的一部分;malloc是由C库提供的函数。 2.New以具体类型为单位进行内存分配,malloc只能以字节为单位进行内存分配 3.New在申请单个类型变量时可进行初始化,malloc不具备内存初始化功能

C++内联函数&C宏函数

inline int max(inta,intb)

{

teturn a>b ? a : b;

}

#define max(a,b)(a)>(b)?(a):(b)

内联函数调用时,要求实参和形参的类型一致,另外内联函数会对实参的表达式进行求值,然后传递给形参;而宏替换只是用实参简单的进行替换形参;内联函数是在函数编译的时候,在调用的地方将代码展开,而宏则是在预处理时进行替换;在C++中建议使用内联函数来替换带参数的宏

extern "C" 实现C和C++混合编程

#ifdef_cplusplus

extern"c"

{

#endif

…………

#ifdef_cplusplus

}

#endif

相关推荐

3D 数据交换格式(.3DXML)简介
365速发国际app

3D 数据交换格式(.3DXML)简介

📅 10-19 👁️ 2460
《魔兽世界》乌龟服冬幕节雪球刷新时间介绍
365bet世界杯欢迎您

《魔兽世界》乌龟服冬幕节雪球刷新时间介绍

📅 11-17 👁️ 8740
朗逸怎么连蓝牙听歌
365速发国际app

朗逸怎么连蓝牙听歌

📅 07-13 👁️ 2217