C++函数-inline函数的里里外外

来源:互联网 发布:js可以抓取placeholder 编辑:程序博客网 时间:2024/05/22 08:22

         inline函数背后的整体观念是,将“对此函数的每一个调用”都用函数本体来替换。

        在内存有限的机器上,过度热衷于inlining会造成程序体积太大(对可用空间而言)。即使拥有虚拟内存,inline造成的代码膨胀也会导致额外的换页行为,降低指令高速缓存装置的点击率,以及伴随而来的效率损失。

        换个角度来说,如果inline函数的本体很小,编译器针对“函数本体“所产生的的代码可能比针对”函数调用“所产出的代码更小。

 

1.inline函数的定义

 

(1)隐喻方式:将函数定义在class定义式内

(2)明确声明:在定义式前加上关键字inline。

inline函数通常一定被置于头文件内,因为大多数建制环境在编译过程中进行inlining,而为了将一个”函数调用“替换为“被调用函数的本体”,编译器需要知道那个函数长什么样子。

inline在大多数c++程序中是编译器行为。

 

 

2. inline函数使用注意

 

(1)virtual函数由于是在运行期才能知道具体调用哪个函数,编译器根本不知道要调用哪个,因此会使inline落空。

(2)编译器通常不对“通过函数指针而进行的调用”实施inlining,这意味着可能将inline或者不被inline,取决于调用的实施方式。

(3)不对构造函数和析构函数实施inline,构造函数往往执行了很多隐藏的操作。

(4)inline函数无法随着程序库的升级而升级,换句话说,一旦程序库改变了客户所使用的库函数,客户端程序必须进行重新编译。

原创粉丝点击