内联函数
编译
时,编译器将内联函数调用
替换为函数本体代码,以提高函数运行的速度
- 一般而言,使用内联函数会使程序的体积膨大
- 若内联函数的本体很小,编译器针对函数本体所产生的代码比针对函数调用所产生的代码更小,则使用内联函数会使目标代码更小
- 内联函数一般适合于只有
1-5行
语句的小函数
- 在函数
声明
或定义
前加上关键字inline
inline
只是对编译器的一个申请,不是强制命令
(1)内联函数中包含循环
、递归
、switch
等复杂语句时,编译器将该函数视为普通函数
(2)对于虚函数,编译器也将其视为普通函数
- 定义在类声明内的
成员函数
默认是内联函数
- 当
友元函数
在类内定义时,也被视为内联函数
- 对内联函数不可以进行
异常接口
的声明
- 内联函数的
定义
必须出现在内联函数的调用
之前 - 一般把
内联函数的定义
放在头文件中
默认参数
默认参数:
当函数调用中省略了实参数时自动使用的一个值
- 必须从右向左添加默认值
(1)即要为某个参数设置默认值,则必须为它右边的所有参数提供默认值 - 实参是按从左到右的顺序依次被赋值给相应的形参,而不能跳过任何参数
- 默认参数在定义和声明中只能出现1次,不能同时出现
int chico(int n, int m = 6, int j)
int harpo(int n, int m = 4, int j = 5)
beeps = harpo(3, , 8)
char * left(const char * str, int n = 1);
char * left(const char * str, int n)
{
.....
}
函数重载
函数重载
与函数的返回值
无关,只与函数名
以及函数参数数目
、类型
和顺序有关
函数重载:
保证函数名相同,函数特征标(参数的类型、数目和顺序)不同- 在成员函数中即使没有参数可以实现函数重载,即
const
成员函数与非const
成员函数也可构成重载