C/C++的区别

一、默认值

<1>C语言中没有默认值,而C++中有默认值。
<2> C++中默认值从右向左给出,必须从最右端开始。默认值的效率也要高于传参。(立即数直接压栈)
注:每个参数的默认值只能给一次,不可重复给。

二、内联函数

<1>inline没有普通函数的栈帧开辟和回退的过程。
<2>inline有时候被称为更安全的宏,因为在编译阶段处理时,会直接将函数的代码在它的调用点展开,从而不产生函数调用的开销,也不产生符号。
<3>inline只在release版本起作用,在debug版本和普通的函数是一样的。
<4>递归函数不能被处理为内联函数:编译阶段不运行,并不知道递归几次,inline的代码无法展开,进行替换。
<5>inline关键字只是建议编译器把该函数处理为内联函数,其结果还是由编译器自身决定。

三、函数重载

C的函数符号的生成:由函数名字决定。
C++的函数符号的生成:由函数名和参数列表决定。
<1>C++重载的前提:函数名字相同,参数列表不同。注:不可通过返回值区分重载
静多态:编译时的多态 —–> C++函数的重载/模板函数
动多态:运行时的多态 —–> 继承,虚函数
<3>函数重载时,被重载函数和重载函数必须处于同一个作用域中。
<4>用const和volatile修饰的非指针和引用形参,是不能构成重载的。
<5>C只能生成C的符号,C++可以生成C和C++的符号。注:使用extern “c”{}

四、const

C中:const修饰的是常变量,和普通变量是相同的,使用时需要在内存中取。

const int a;//可以不被初始化
int array[a] = {0};//error

C++中:const修饰的是常量,必须初始化,使用时直接替换。

const int a = 10;       
int array[a];//ok

C++中的常量会退化为常变量:

int b = 20;
const int a = b;
int array[a] = {0};//错误,常量已经退化为常变量

五、设计思想

<1>C是面向过程的语言:C是一个结构化语言,它的精髓在于算法和数据结构。C程序的设计考虑的是如何通过一个过程,对输入进行运算处理得到输出。
<2>C++是面向对象的语言:C++程序的设计考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出。

六、引用

引用只存在于C++中,它被称为一种更加安全的指针。
引用:某一变量的一个别名,对引用的操作相当于对变量本身操作,它们共用同一个内存。
指针和引用的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值