函数(二)

内联函数 与 常量表达式函数

  • 内联函数可以避免函数调用的开销,比一般函数更轻量,一般用于规模较小,流程直接,频繁调用的函数

  • 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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容