内联函数inline

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用处较广,详情网搜。

posted @ 2016-06-04 16:03  Victor_Lv  阅读(119)  评论(0编辑  收藏  举报