重载函数:
1.重载函数是在同一个名字空间中存在两个或者多个具有相同名字的函数所构成的语法现象。
2.调用重载函数的语句,是由编译器在编译期确定的。
3.编译器判断某个函数调用语句所对应的重载函数时,判断依据是函数参数的类型、个数和次序。
4.如果编译器无法判定,就会报告二义性错误。
带有默认参数值的函数:
函数的参数可以指定默认值。指定默认值时,要保证带有默认值的参数要位于函数参数列表的右侧。
调用带有默认参数值的函数时,如果不指定带有默认值的参数,则该参数自动被赋为默认值
int Add(int a, int b = 3); // 原型声明
int Add(int a, int b = 3) // 错误!不能重定义默认参数值,
{
// 尽管与原型声明相同
}
内联函数(Inline):
普通函数 | 内联函数 | |
优点 | 易读易维护 | 减小函数调用开销 ,可以将代码插入到调用处 |
缺点 |
调用时有开销 函数调用时:参数及部分CPU寄存器的内容进栈,控制流跳转 函数返回时:返回值及寄存器值出栈,控制流跳转 |
导致程序变大 |
定义函数时,在函数类型前面加上 inline 关键字,则该函数就成为内联函数。一般而言,内联函数的声明和定义都在一起。我们很少将内联函数的声明和定义分开编写。
// 定义内联函数
inline int max(int a, int b) {
return (a > b ? a : b);
}
// Calling (调用内联函数)
int x = max(3, 5);
int y = max(0, 8);
// Inline expansion(内联展开)
int x = (3 > 5 ? 3 : 5);
int y = (0 > 8 ? 0 : 8);