美文网首页
内联函数知多少?

内联函数知多少?

作者: guanghaolv | 来源:发表于2020-07-05 00:08 被阅读0次

到底啥是内联(inline)函数?为什么内联函数效率比较高呢?

要想解决上述问题,就必须先来说说普通的函数调用是怎样的流程.在大多数机器上,一次函数调用其实包含着一系列工作:1.调用前先保存寄存器,并在返回时恢复;2.可能需要拷贝实参;3.程序转向一个新的位置继续执行等等.这些无疑都是函数调用时的开销,而内联函数则可以避免函数调用产生的这些开销,因此它的效率比较高.

内联函数是怎么避免函数调用时的开销呢?举一个例子:

const string& shorterString( const string& str1, const string& str2 ){
    return str1.size() <= str2.size() ? str1 : str2;
}

这是一个普通的函数,而定义成内联函数之后,则如下调用

cout << shorerString( s1, s2 ) << endl;

将在编译过程中展开成类似于下面的形式

cout << (s1.size() <= s2.size() ? s1 : s2) << endl;

从而消除了shorterString函数的运行时开销.

在函数的返回类型前加上关键词inline,这样就可以将它声明成内联函数了.

值得注意的是,内联说明只是向编译器发出的一个请求,编译器可以选择忽略这个请求.至于编译器到底同意内联请求还是忽略,我们也不知道.一般来说,简短的函数声明为inline时,编译器大概率会同意内联请求;而对于复杂函数,编译器一般会忽略.

相关文章

  • 内联函数知多少?

    到底啥是内联(inline)函数?为什么内联函数效率比较高呢? 要想解决上述问题,就必须先来说说普通的函数调用是怎...

  • C++第二弹---函数

    内联函数 内联函数的定义内联函数也叫内嵌函数,他主要是解决程序运行效率。当内联函数收到编译器的指示时,即可发生内联...

  • 内联函数

    内联函数 整理自内联函数百度百科 内联函数是指用inline修饰的函数(并不是所有用inline修饰的函数都是内联...

  • 《C++ Primer Plus》:函数探幽

    本章内容概览 内联函数 引用变量 按引用传递函数参数 默认参数 函数重载 函数模板 内联函数 内联函数是C++为提...

  • Kotlin系列之let、with、run、apply、also

    目录: 一、回调函数的Kotin的lambda的简化二、内联扩展函数之let三、内联函数之with四、内联扩展函数...

  • C++基础-(函数)

    C++基础 函数 内联函数 内联函数非常短的函数适合于内联函数体会到插入到发生函数调用的地方普通函数调用多次也只有...

  • C++——内联函数、函数重载、函数缺省参数

    内联函数 使用inline关键字将函数变为内联函数,函数内联是为了降低函数调用时占用的多余时间,多余时间的产生在,...

  • C++——内联函数、函数重载、函数缺省参数

    内联函数 使用inline关键字将函数变为内联函数,函数内联是为了降低函数调用时占用的多余时间,多余时间的产生在,...

  • 内联函数

    内联函数 在类中定义的函数,但是实现却在类外面。并且在函数前加了 inline 就是内联函数,内联函数效率一般比较...

  • C++内联函数与C语言函数宏

    C++内联函数 什么是内联函数? 在函数的声明和定义前加一个 inline 关键字,这个函数就是内联函数。 通常会...

网友评论

      本文标题:内联函数知多少?

      本文链接:https://www.haomeiwen.com/subject/gtkmqktx.html