您的位置:首页 > 其它

内联函数inline

2016-06-04 16:03 267 查看
C++内联函数可以看做是C里面的define宏定义的升级版,目的是为了降低程序运行的时间,我们知道C里面的宏定义是进行简单的文本替换。内敛函数不是纯粹的文本替换,需要知道的是,我们的C++程序进行函数调用时,是需要先跳出当前执行的程序,去到函数所在的地址去执行函数代码,执行完再跳回刚才的位置继续往下执行程序,这里就有一个来回跳转的过程,是相当费时间的,所以如果直接把函数体直接给它扔到程序该函数的位置,就不用跳转,而是直接顺序执行代码了。Effective C++里面有一节作者就推荐说尽量用const /
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用处较广,详情网搜。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: