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