C和C++的区别(一)

1、函数的默认值(c++特有)

函数的默认值是c++特有的,c语言不支持默认参数,但是可以用宏来模拟。

  • 从右向左依次附默认值
  • 默认值只能附一次
  • 一般是在声明上附默认值

2、C++函数符号生成规则

int Compare(int a, int b);             ?Compare@@YAHHH@Z
double Compare(int a, int b);          ?Compare@@YANHH@Z
double Compare(double a, int b);       ?Compare@@YANNH@Z
double Compare(int a, double b);       ?Compare@@YANHN@Z

    从上面的几行代码我们可以看出每个函数生成的函数符号都不一样,由以下几点决定:

  • 函数返回值
  • 函数名称
  • 形参列表(1、形参类型2、形参个数3、形参顺序)

3、函数重载

函数重载的三要素:

  • 同作用域才能重载
  • 函数名相同
  • 参数列表不同

注:函数的重载不依赖返回值

4、内联函数(inline)

内联函数在编译阶段处理,在调用点直接将代码展开。

内联函数与static修饰的函数的区别:

  1. 本文件可见
  2. 内敛没有栈帧开辟和清理的开销,static修饰的函数有开栈和清栈的开销

内敛的优点:提高效率。

内敛的缺点:以代码膨胀为代价,空间浪费大。

内敛的注意事项:

  1. 写在头文件中
  2. 只有在release版本生效
  3. 递归、while、switch,内敛只是给一个建议
  4. 内敛是基于实现的关键字(加在定义点)

注:内联函数release版本不生成符号,不可以调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值