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修饰的函数的区别:
- 本文件可见
- 内敛没有栈帧开辟和清理的开销,static修饰的函数有开栈和清栈的开销
内敛的优点:提高效率。
内敛的缺点:以代码膨胀为代价,空间浪费大。
内敛的注意事项:
- 写在头文件中
- 只有在release版本生效
- 递归、while、switch,内敛只是给一个建议
- 内敛是基于实现的关键字(加在定义点)
注:内联函数release版本不生成符号,不可以调试。