内联函数inline
2016-06-04 16:03
267 查看
C++内联函数可以看做是C里面的define宏定义的升级版,目的是为了降低程序运行的时间,我们知道C里面的宏定义是进行简单的文本替换。内敛函数不是纯粹的文本替换,需要知道的是,我们的C++程序进行函数调用时,是需要先跳出当前执行的程序,去到函数所在的地址去执行函数代码,执行完再跳回刚才的位置继续往下执行程序,这里就有一个来回跳转的过程,是相当费时间的,所以如果直接把函数体直接给它扔到程序该函数的位置,就不用跳转,而是直接顺序执行代码了。Effective C++里面有一节作者就推荐说尽量用const /
enum / inline替代define宏定义,相比宏定义,inline函数有很多优点,这里我只提一点,那就是宏定义只是提供纯粹的文本替换,而inline函数是一个函数,可以进行前者没有的参数类型自动转换,下面的示例代码有例子。当然也并不是都用inline的好,C++ primer plus里面说到:
示例程序:
要注意区分typename和typedef,typename一般是在模板/泛型编程时使用,typedef用处较广,详情网搜。
enum / inline替代define宏定义,相比宏定义,inline函数有很多优点,这里我只提一点,那就是宏定义只是提供纯粹的文本替换,而inline函数是一个函数,可以进行前者没有的参数类型自动转换,下面的示例代码有例子。当然也并不是都用inline的好,C++ primer plus里面说到:
示例程序:
<pre name="code" class="cpp">/* * inline.cpp * * Created on: 2016年6月4日 * Author: lvlang */ #include <iostream> using namespace std; template<typename T> inline T add(T a,T b); inline void test(int a) { cout<<a<<endl; } int main() { test(5.2); cout<<add(5.0,7.2)<<endl; return 0; } template<typename T> inline T add(T a,T b) { return a + b; }
要注意区分typename和typedef,typename一般是在模板/泛型编程时使用,typedef用处较广,详情网搜。
相关文章推荐
- C++ Primer 面向对象编程 15.2 基类和派生类 virtual
- Cocoapods 降低版本及卸载
- (43). Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】
- [Redux] Navigating with React Router <Link>
- 抽象类
- HDU-2009
- 设置进入存在EditText的界面时,输入法不会自动弹出
- MAC 多版本JDK并存解决方案
- HDU 数塔 2084
- 使用AndroidStudio无法使用drawable下的资源,只能使用mipmap目录下的资源?求救大神
- Win32 GDI+ 学习笔记(一)之win32显示图片
- Qualcomm手机NV中某些项的含义解析
- LeetCode 90 Subsets II--In C++
- redis lua and nodejs
- Java Mission Control(JMC)介绍
- UVA 10299 Relatives(欧拉函数)
- Google Java编程风格指南(献给那些没有良好编码习惯的程序员们)转载!
- iOS点击事件重复执行(取消延迟执行函数)
- Android - 开源框架 - xUtils - BitmapUtils模块
- 友元类与友元函数的继承与传递问题