C++每日一练(inline)
2016-10-18 18:36
162 查看
一、今日课题
inline二、实战演练
在程序编译时,编译器会将内联函数调用处用函数体替换1.有何用?
inline通过消除调用开销来提升性能,并且允许进行调用间优化。
2.怎么用?
inline对于编译器而言,意味着“在编译阶段,将调用动作以被调用函数的本体替换之”。但是它只是一种建议,编译器可以去做,也可以不去做。从逻辑上来说,编译器将函数inline的步骤如下:
1)将inline函数体复制到inline函数调用点处;
2) 为所用inline函数中的局部变量分配内存;
3)将inline函数的的输入参数和返回值映射到调用方法的局部变量空间中;
4)如果inline函数有多个返回点,将其转变为inline函数代码块末尾的分支(使用GOTO)。
经过以上处理,可消除所有与调用相关的痕迹以及性能的损失。
3.前方高能
1)键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。
2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。类的构造函数和析构函数容易让人误解成使用内联更有效。要当心构造函数和析构函数可能会隐藏一些行为,如“偷偷地”执行了基类或成员对象的构造函数和析构函数。所以不要随便地将构造函数和析构函数的定义体放在类声明中。一个好的编译器将会根据函数的定义体,自动地取消不值得的内联(这进一步说明了 inline 不应该出现在函数的声明中)。
三、C++树
10/18/2016 6:35:14 PM
相关文章推荐
- 一个关于C++ Inline关键字的引发的一个错误
- C++内联函数(Inline)介绍
- C++中inline函数的定义为什么要放在头文件中?头文件中“只定义一份”是什么意思?const object 和inline函数是“一次定义规则”
- 从c++到java 之三(inline)
- C++ Inline ASM 内联汇编祥解
- C++中的inline
- [转]C/C++中关键字static,const,inline,define,typedef的用法及其意义
- C++内联函数(Inline)介绍(2)
- C++中的inline
- C/C++每日一课 >> [原创]细说如何确定一个变量的类型(2005-04-25)
- [CodeProject每日一荐] 两个C++实现的MSN Messenger弹出窗口风格的窗体
- 关于C++中的内联函数(inline)
- [C++]尽量以const,enum,inline替换#define
- [CodeProject每日一荐]实现Double Metaphone语音匹配算法[一]:介绍与C++实现
- C/C++每日一课 >> [原创]指针易犯错误集(初学者适用)(2005-05-08)
- C++内联函数(Inline)介绍
- 挑战30天C++入门极限-在C++语言中,关于内联函数(inline)的入门教程
- [转]C/C++关键字static,const,inline,define,typedef
- c++ 中的inline
- C++ Inline ASM 内联汇编祥解