内联函数 与 常量表达式函数
内联函数可以避免函数调用的开销,比一般函数更轻量,一般用于规模较小,流程直接,频繁调用的函数
constexpr函数,函数返回的类型以及所有形参的类型都得是字面值类型,函数中必须有且只有一条return语句
这两种函数可以在程序中多次定义,但定义必须都一样,基于这两个原因,经常放在头文件中
函数匹配规则
C++支持函数重载,选择采用哪一个函数,基于下列规则
- 第一步 选定候选函数(同名,在调用点可见)
- 第二步 选定可行函数(形参数量与本次相等,每个形参类型符合调用或者可以转化成对应调用类型)
- 第三步 寻找最匹配,形参类型越接近,匹配越好
实参类型转换
为了确定函数的最佳匹配,编译器将实参类型转换分为几个等级
1.精确匹配
- 实参类型和形参类型相同
- 实参从数组类型或函数类型转化为对应的指针类型
- 向实参添加顶层const 或者从实参中删除顶层const
2.通过const转化实现的匹配
3.通过类型提升实现的匹配
4.通过算数类型转换或指针转换实现的匹配
5.通过类类型转换实现的匹配
函数指针
bool lc(const string &, const string &);
bool (*pf)(const string &, const string &);
pf = lc;
pf = &lc;