内联函数和宏定义

内联函数

  • 如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。
  • 一个函数定义为内联函数,则需要在函数名前面放置关键字 inline
  • 在类定义中的定义的函数都是内联函数,即使没有使用 inline 说明符
  • 内联函数以代码复杂为代价,它以省去函数调用的开销来提高执行效率。
  • 另一方面每一处内联函数的调用都要复制代码,消耗更多的内存空间,因此以下情况不宜使用内联函数:
    • 函数体内的代码比较长,将导致内存消耗代价
    • 函数体内有循环,函数执行时间要比函数调用开销大

内联函数和宏定义的区别

  • 在使用时,宏只做简单字符串替换(编译前)。而内联函数可以进行参数类型检查(编译时),且具有返回值。
  • 内联函数在编译时直接将函数代码嵌入到目标代码中,省去函数调用的开销来提高执行效率,并且进行参数类型检查,具有返回值,可以实现重载。
  • 内联函数有类型检测、语法判断等功能,而宏没有

内联函数适用场景:

  • 使用宏定义的地方都可以使用 inline 函数。
  • 作为类成员接口函数来读写类的私有成员或者保护成员,会提高效率。
posted @ 2023-02-20 15:34  小秦同学在上学  阅读(23)  评论(0编辑  收藏  举报