《Effective C++》读书笔记之item30:透彻了解inlining的里里外外
来源:互联网 发布:卡洛塔妮淘宝是正品吗 编辑:程序博客网 时间:2024/04/30 19:49
1.内联函数使得对此函数的每一个调用都以函数本体替换,因而可以免除调用成本(保存寄存器并在返回时恢复,复制实参,转向新位置继续执行等)。但是同时,滥用内联函数可能会造成代码膨胀甚至导致内存不足。因此,调用频繁并且函数体较少的成员函数(或者友元函数)适合内联,而其他情况往往需要权衡得失。
内联函数的声明:在类内定义(隐喻方式)或者显式地在函数前使用inline关键字。
内联函数应该在头文件中定义:只要内联函数的定义在某个源文件中只出现一次,而且在所有源文件中,其定义必须是完全相同的,因此放在头文件中方便不容易出错。这样使得在文件中加入修改内联函数时,使用该头文件的所有源文件都必须重新编译。此时,如果换用常规函数,可能只需要将函数编译一下再连接就行了,可见是否需要使用内联是需要权衡的。
内联函数对编译器只是一个建议,各个编译器对内联函数的操作不尽相同。事实上,声明为inline的函数未必真的是一个内联函数,这取决于编译器;如果没有内联化,编译器会给出警告信息。
当用函数指针的方式调用内联函数时,该函数将被实体化(否则怎么会有地址呢?)
大部分调试器对内联函数基本无效。
PS:部分来自于《C++ Premer》第四版。
2.函数模板往往在头文件中定义,但是不能因此就把它们声明为内联——它们没有必然关系。
3.80-20经验法则:平均而言一个程序往往将80%的执行时间花费在20%的代码上面。
- 《Effective C++》读书笔记之item30:透彻了解inlining的里里外外
- 读书笔记《Effective C++》条款30:透彻了解inlining的里里外外
- Effective C++:条款30:透彻了解inlining的里里外外
- 《Effective C++》:条款30:透彻了解inlining的里里外外
- C++之透彻了解inlining的里里外外(30)---《Effective C++》
- 《Effective C++》学习笔记条款30 透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- 条款30:透彻了解inlining的里里外外
- item30: 彻底了解inline的里里外外
- 条款30 透彻了解inlining的里里外外
- inlining的里里外外
- 条款30:透彻了解inline的里里外外
- 透彻了解inline的里里外外——effective c++学习笔记
- 透彻了解 inline的里里外外 绝不是那么简单
- 防止全局变量、头文件重复包含与 extern 的使用
- SQL优化之不走索引_加hint也不走索引
- Robberies
- MFC(绘图与保存,孙鑫C++第十一讲笔记整理)
- WinCE驱动编写小结
- 《Effective C++》读书笔记之item30:透彻了解inlining的里里外外
- 杂谈:Android or iOS,我们何去何从?
- uva-10098-Generating Fast-全排列典例
- 第11章实现继承
- 若要调试此模块,请将其项目生成配置更改为“调试”模式
- 安全高新能网站搭建(一)
- HD1093
- 这一年,我所感悟到的
- MFC 中如何对客户区坐标进行转化(SetWindowExt和SetViewportExt)