【C++面向对象】4. 内联函数

文章目录

  • 【 1. 内联函数的底层原理 】
  • 【 2. 内联函数的定义 】
  • 【 3. 内联函数的优缺点及对应的应用场景 】

  • 内联函数(inline functions)

【 1. 内联函数的底层原理 】

  • 如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。即内联的主要特点 是:它会复制源函数代码到调用的位置,而不像普通函数一样进行现场保护、跳转执行然后恢复现场等操作,可以 使程序效率提高

  • 对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。

【 2. 内联函数的定义 】

  • 如果想把一个函数定义为内联函数,则需要在函数名前面放置 关键字 inline,在调用函数之前需要对函数进行定义。 如果已定义的函数多于一行,编译器会忽略 inline 限定符。

  • 在类定义中的定义的函数都是内联函数,即使没有使用 inline 说明符。

  • 实例

#include 

using namespace std;

inline int Max(int x, int y)
{
   return (x > y)? x : y;
}

// 程序的主函数
int main( )
{

   cout << "Max (20,10): " << Max(20,10) << endl;
   cout << "Max (0,200): " << Max(0,200) << endl;
   cout << "Max (100,1010): " << Max(100,1010) << endl;
   return 0;
}

【C++面向对象】4. 内联函数_第1张图片

【 3. 内联函数的优缺点及对应的应用场景 】

  • 以牺牲代码的空间换时间,提高了效率。
  • 与c语言的宏的思想类似,但要优于宏,因为宏不能做类型检查,而内联函数作为一个函数可以进行类型检查。
  • 建议使用的情况:
    • 函数代码本身较短,系统可能默认处理其为内联函数
    • 频繁被调用的,处于循环中的函数。
  • 不能使用的情况:
    • 过于巨大的函数,编译器可能拒绝该函数作为内联函数来插入。
    • 递归函数

你可能感兴趣的:(C++,1024程序员节,C++)