C++与C基础知识的区别

来源:互联网 发布:淘宝售假如何申诉 编辑:程序博客网 时间:2024/05/17 01:52


C++与C基础知识的区别

1.      变量方面

a)        变量定义的位置

C++可在需要时定义(作用域区间),而C总是在程序起始位置定义(程序过大时,不易维护)

b)        变量类型前缀方面

C++中对程序有更加强大的自动优化功能,而C中需要前缀对变量进行优化和必要控制,比如registor

c)        变量的类型方面

C++中对于变量或者函数的参数都必须有明确的说明(强类型匹配),而C中可出现fun();此类不定参数的函数

d)        const(特别说明)

C++中有真正的const常量,需由子面值直接赋值,不能由变量赋值(编译时维持在符号表中),而C中都是const变量(只读变量)

 

e)        引用

C++增加引用类型type&, 使用引用必须在定义时初始化,代表初始化变量的内存空间的别名,编译器处理时转化为指针常量处理

 

2.      函数方面

a)        inline函数与#define

C++中inline函数与预定义的代码段效率上等效,但inline函数会检查参数类型、返回值,比C中的宏定义更安全,若需强制inline需在函数名尾部加上 

XXXXXXXXX      __attribute__(always_inline))(但不便于移植(__attribute__内置关键字))

b)        默认参数函数

C++中支持默认参数函数,而C中函数参数不安全如fun();

c)        重载函数

C++支持重载函数,C中不支持,本质是C++编译器在进行编译时会将重载函数的函数名带上参数信息,而C编译器对函数名不带上参数,因此无法区分

(默认函数与重载函数一般不同时使用,以免造成歧义)

d)        占位符参数

C++为向C程序兼容,支持占位符参数(即是无名参数(int = 0)),同时便于拓展。

e)        C++与C函数直接的相互调用

在C++项目中extern  “C”可使指定代码按照C编译器方式编译,同时C项目中可使用extern  “C”对C++部分代码编译

 

3.      关键字方面

a)        new和delete

C语言调用malloc函数库实现动态内存分配,而C++则在C++语言中新增关键字实现这一功能,使得动态分配与回收内存成为C++语言的一部分

new ----》delete    new a[N] ---》delete [] a

b)        extern(新意义)

extern 之前一直用于多文件变量的声明,如今利用extern “C”可实现C++与C代码之间的利用

c)        namespace

C++中利用namespace实现同名标志符的共用,C中默认使用一个命名空间(默认命名空间)

d)        强制类型转化

xxx_case<type>(expression)

static_case:基本类型之间的转化

const_case:去常量化

dynamic_case:子类和父类,类与类之间转化

reinterpret:指针与指针,指针与整数之间转化(不安全较为少用)

 

 

 


 

0 0