C++ inline function

A function specified as inline (usually) is expanded "in line" at each point in the program in which it is invoked. Assuming we made shorterString an inline function, then this call

将函数指定为 inline 函数,(通常)就是将它在程序中每个调用点上“内联地”展开。假设我们将 shorterString 定义为内联函数,则调用:

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

would be expanded during compilation into something like

在编译时将展开为:

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

The run-time overhead of making shorterString a function is thus removed.

从而消除了把 shorterString 写成函数的额外执行开销。

内联函数应该在头文件中定义,这一点不同于其他函数。inline 函数的定义对编译器而言必须是可见的,以便编译器能够在调用点内联展开该函数的代码。此时,仅有函数原型是不够的。

inline 函数可能要在程序中定义不止一次,只要 inline 函数的定义在某个源文件中只出现一次,而且在所有源文件中,其定义必须是完全相同的。把 inline 函数的定义放在头文件中,可以确保在调用函数时所使用的定义是相同的,并且保证在调用点该函数的定义对编译器可见。

在头文件中加入或修改 inline 函数时,使用了该头文件的所有源文件都必须重新编译。

在类内部定义的成员函数,例如不接受实参的 get 成员,将自动作为 inline 处理。也就是说,当它们被调用时,编译器将试图在同一行内扩展该函数。也可以显式地将成员函数声明为 inline

不在类定义体内定义的 inline 成员函数,其定义通常应放在有类定义的同一头文件中。

原文链接: https://www.cnblogs.com/aquar/archive/2010/02/03/3451492.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ inline function

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/7904

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月6日 下午6:32
下一篇 2023年2月6日 下午6:32

相关推荐