• 内联函数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用处较广,详情网搜。

  • 相关阅读:
    bzoj2733 永无乡 平衡树按秩合并
    bzoj2752 高速公路 线段树
    bzoj1052 覆盖问题 二分答案 dfs
    bzoj1584 打扫卫生 dp
    bzoj1854 游戏 二分图
    bzoj3316 JC loves Mkk 二分答案 单调队列
    bzoj3643 Phi的反函数 数学 搜索
    有一种恐怖,叫大爆搜
    BZOJ3566 概率充电器 概率dp
    一些奇奇怪怪的过题思路
  • 原文地址:https://www.cnblogs.com/lvlang/p/10586444.html
Copyright © 2020-2023  润新知