C和C++的区别

区别从以下几个方面来分析
c++支持以下:

1.函数的默认值
在调用有默认值的函数时,可以不传入形参,形参使用默认值
函数可以有默认值,
(1)自右向左依次赋予
(2)不能重复赋值
(3)一般赋在声明上
使用默认值,少传入一个实参,但是汇编上会生成一个push汇编指令,把形参默认值进行压栈,因此从汇编层面讲,并没有因为少传入一个实参而减少一条汇编指令,也没有提高效率

2.函数重载
函数重载的三要素
(1)同名
(2)参数不同
(3)同作用域

3.inline函数 编译阶段
内联函数就是在普通函数前面加 inline关键字,
(1)调用点直接代码展开
(2)inline函数和普通函数的区别
普通函数有 开栈 清栈的开销
inline函数 没有开栈和清栈的开销
内联函数必须在调用点之前出现,只能在本文件作用域可见,内联函数只在release版本起作用,只是给编译器的建议,是否真的处理成内联函数,最终由编译器决定
回答方式二、
最大区别:在.编译阶段完成生成的.obj文件中,普通函数要在符号表中生成符号,而内联函数在编译阶段被处理,在函数的调用点韩函数代码展开, 因此在符号表中,Inline函数根本不会生成符号,因此无法进行连接,因此内联函数只在本文件可见,一般写在头文件中,被源文件包含使用,内联减少了函数调用栈帧的开辟和清理,提高了调用效率

(3) 建议
代码体小的情况下 函数执行的开销 < 函数开栈清栈的开销
代码体大的情况下 函数执行的开销 > 函数开栈清栈的开销

(4) inline函数和宏的区别
inline函数 在编译阶段 有安全检查和类型检查
宏是在预编译阶段被处理 ,没有安全性和类型检查
内联函数是更安全的宏

(5)inline函数的注意事项
1.写在头文件中
2.只在release版本生效
3.给编译器的一个建议
.基于实现的 不是基于声明的

(6) inline函数和static函数的区别
1、作用域
2、栈帧回退与开辟
inline 没有
static函数与普通函数一样 有
3、产生的符号
inline不产生符号
static函数 产生符号 (local的符号)

4、引用 就是 别名
1.一定要初始化
2.引用不能引用不能取地址的值
3.引用不能改变
4.引用只能使用引用变量所引用的内存单元(变量)

不能返回局部变量的地址
不能返回局部变量的地址或引用

5.const
const 一级指针 二级指针 形参 返回值的结合const修饰的变量 常量
编译阶段 用到常量的地址会替换成常量初始化的值
常引用 引用不能区地址的数据
不能取地址的数据生成临时量
常引用引用临时量
杜绝间接访问修改常量的风险 .new delete

6.名字空间作用域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值