8.内联函数

8.函数-内联函数


8.1 知识点

什么是内联函数

内联函数是一种特殊的函数。它需要使用 inline 关键字对函数进行声明或定义,主要作用是告诉编译器,在调用该函数时,将函数的代码直接插入到调用该函数的位置,而不是执行常规的函数调用过程。这样做的目的是减少函数调用的开销,适用于那些小型且频繁调用的函数。

什么是调用函数的开销?

函数使用的开销主要涉及到压栈、跳转、返回等操作。而内联函数通过将函数代码直接插入调用点来避免这些开销。

内联函数的使用

声明

inline int add(int a, int b);

定义

在函数声明或定义时,在前面加上 inline 关键字。

inline int add(int a, int b)
{
    return a + b;
}

使用

cout << add(5, 2) << endl; // 7
// 相当于直接执行了 5 + 2,减少了函数的开销

注意事项

内联函数的使用有限制:

  • 递归函数不能内联。
  • 大型函数不适合内联(例如函数中有循环或条件分支语句时)。
  • 内联函数的调用会带来代码膨胀(即增大可执行文件的体积)。
  • 如果你的函数过于复杂或代码量较大,即使使用了内联关键字,编译器可能也会忽略它。

总结

内联函数用于减少小型函数和频繁调用函数的调用开销。使用 inline 关键字修改函数后,在调用该函数时,函数中的内容会直接插入到调用该函数的地方。


8.2 知识点代码

Lesson08_函数_内联函数.cpp

#include <iostream>
using namespace std;

inline int add(int a, int b);

int main()
{
    std::cout << "内联函数\n";

    cout << add(5, 2) << endl;//7
    //cout << 5 + 2 << endl;//相当于直接执行了这句 减少了函数的开销
}

#pragma region 知识点一 什么是内联函数

//它是一种特殊的函数
//需要使用 inline 关键字对函数进行声明或定义
//主要作用是告诉编译器,在调用该函数时,将函数的代码直接插入到调用该函数的位置
//而不是执行常规的函数调用过程。
//这样做的目的是减少函数调用的开销
//适用于哪些小型的、频繁调用的函数

//什么是调用函数的开销?
//函数使用的开销主要涉及到压栈、跳转、返回等操作
//而内联函数通过将函数代码直接插入调用点来避免这都些开销

#pragma endregion

#pragma region 知识点二 内联函数的使用

//在函数声明或定义时在前面加上 inline 关键字
inline int add(int a, int b)
{
    return a + b;
}

//注意:
//内联函数的使用有限制
//1.递归函数不能内联
//2.大型函数不适合内联(比如函数中有循环或条件分支语句时)
//3.内联函数的调用会带来代码膨胀(即增大可执行文件的体积)
//4.如果你的函数过于复杂或代码量较大,即使使用了内联关键字,编译器可能也会忽略它

#pragma endregion

#pragma region 总结

//内联函数是用于减少 小型函数、频繁调用的函数的 调用开销的
//使用inline关键字修改函数后 在调用这个函数时,会将函数中的内容直接插入到调用该函数的地方

#pragma endregion

8.3 练习题

内联函数关键词是什么?

在函数声明前 加上 inline 关键字。

内联函数的作用是什么?

主要作用是告诉编译器,在调用该函数时,将函数的代码直接插入到调用该函数的位置,而不是执行常规的函数调用过程。

使用内联函数的限制是什么?

  • 递归函数不能内联。
  • 大型函数不适合内联(比如函数中有循环或条件分支语句时)。
  • 内联函数的调用会带来代码膨胀(即增大可执行文件的体积)。
  • 如果你的函数过于复杂或代码量较大,即使使用了内联关键字,编译器可能也会忽略它。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏