【c++手记】关于inline使用
2012-09-03 00:00
295 查看
inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。
《c++ primer》P221
将一部分的小操作(如两int型变量比较)定义为一个函数有几点好处:
1.阅读和理解一个函数的调用,比读一条用等价的条件表达式容易得多
2.修改函数比修改每一处表达式容易
3.使用函数保证统一行为
4.函数可以重用,不必重写代码
【一般函数与内联函数区别】
but,写成函数有个缺点:调用函数比调用表达式要慢!调用函数工厂是需要:保存寄存器;返回时恢复;负责实参;程序必须转向一个新位置执行。
使用内联函数可以帮助解决以上问题。
【编译层面】
将函数指定为内联函数,程序中每个调用点“内联地”展开,如:
cout<<add(a,b);//add(int,int)为内联函数
编译的时候就会变成
cout<<a+b;
【使用方法】
1.在函数返回类型上前加上关键字inline就将函数指定为内联函数(一般为声明与实现分离情况,即声明在头文件,实现在源文件)
2.在声明处直接定义此函数,可加可不加inline(即声明与实现皆在头文件时候)
【Warning】
1.内联说明(inline specification)对于编译器来说只是一个建议,编译器可以选择忽略建议
2.内联机制仅适用于优化小,只有几行代码而且经常别调用的函数,大多数编译器不支持递归函数的内联,且一个1000多行代码的函数也不太可能在调用点内联展开!
3.内联函数应该在头文件中定义!
《c++ primer》P221
将一部分的小操作(如两int型变量比较)定义为一个函数有几点好处:
1.阅读和理解一个函数的调用,比读一条用等价的条件表达式容易得多
2.修改函数比修改每一处表达式容易
3.使用函数保证统一行为
4.函数可以重用,不必重写代码
【一般函数与内联函数区别】
but,写成函数有个缺点:调用函数比调用表达式要慢!调用函数工厂是需要:保存寄存器;返回时恢复;负责实参;程序必须转向一个新位置执行。
使用内联函数可以帮助解决以上问题。
【编译层面】
将函数指定为内联函数,程序中每个调用点“内联地”展开,如:
cout<<add(a,b);//add(int,int)为内联函数
编译的时候就会变成
cout<<a+b;
【使用方法】
1.在函数返回类型上前加上关键字inline就将函数指定为内联函数(一般为声明与实现分离情况,即声明在头文件,实现在源文件)
2.在声明处直接定义此函数,可加可不加inline(即声明与实现皆在头文件时候)
【Warning】
1.内联说明(inline specification)对于编译器来说只是一个建议,编译器可以选择忽略建议
2.内联机制仅适用于优化小,只有几行代码而且经常别调用的函数,大多数编译器不支持递归函数的内联,且一个1000多行代码的函数也不太可能在调用点内联展开!
3.内联函数应该在头文件中定义!
相关文章推荐
- C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来)
- 关于使用VS2010编译c文件及c++文件
- [C++]关于内联函数的使用
- C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来)
- 关于C++调用jar包,在创建虚拟机时使用JNI_CreateJavaVM调用失败返回-1的问题
- C/C++中关于qsort的使用
- 关于c++的inline关键字
- 获取iframe中的内容、查找获取指定元素(关于用c++调用WEBBROWSER控件,使用相关接口操作web页面元素的一些方法)
- 关于C++中函数指针的使用(ZZ)
- 关于C++中sort函数所使用的cmp函数中的&的疑惑
- C++中关于new和delete的使用
- C++中关于return关键字的使用
- Qt关于dll的生成和使用(Qt C++ li…
- 漫漫编程路——C++篇(五)——关于使用静态成员
- 深入C++中inline关键字的使用
- c++内联函数(inline)使用详解
- 关于C++中vector使用--simple test
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- c++ 关于map的使用
- C++中关于sizeof使用的总结