zoukankan      html  css  js  c++  java
  • 内联函数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用处较广,详情网搜。

  • 相关阅读:
    excel 合并
    百度百科-人物数据采集
    list 元素个数*10 生成一个新的list
    mongo 备份脚本
    python excel合并脚本
    java多线程之消费生产模型
    Lasso回归
    岭回归
    普通最小二乘法
    常问的MySQL面试题整理
  • 原文地址:https://www.cnblogs.com/lvlang/p/10586444.html
Copyright © 2011-2022 走看看