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

  • 相关阅读:
    NHibernate开源框架Cuyahoga学习之数据访问实现
    Petshop4.0 缓存设计学习
    Jquery实现ToolTip之元素定位
    客户单操作Cookie
    .Net 通过MySQLDriverCS操作MySQL
    NHibernate的基本使用
    提高ASP.NET性能的十大方法
    工作流引擎下基于表达式Tree复杂验证的实现
    C#注册表操作
    WinForm应用程序中的ComboBox实现ReadOnly功能
  • 原文地址:https://www.cnblogs.com/lvlang/p/10586444.html
Copyright © 2011-2022 走看看