zoukankan      html  css  js  c++  java
  • 转: inline关键字使用

    1、inline用在函数声明时,还是函数定义时?还是两边都加? 
    首先,内联函数声明和定义最好在同一个文件中,其它的情况没有实用上的意义。 
    只要在同一个文件中,声明和定义至少其一加“inline”修饰即可。 

    2、inline的函数可不可以同时是虚函数? 
    可以。 
    因为inline只是给编译器的一种建议,编译器并不保证一定进行内联展开,也并不保证一定不进行内联展开。更详细地讲,假如有10个地方调用了这个函数,并不保证10处都会内联展开或都不会内联展开,完全可能实际上只展开了5处。另外5处没有展开。 
    因此,virtual函数作inline也还是有意义的,只要编译器发现某一处是静态调用(比如从对象上而非从指针或引用上),则至少这一处调用还是完全有可能做内联展开的。 

    3、构造函数可不可以加inline关键字,我发现加后,编译没问题,如果在其他文件中调用,链接时会出现错误?
    那说明你的构造函数的定义和声明不在同一个文件中。 
    这种情况别去研究了,本来很简单的问题,只是一两句说不清楚,而且也没有太多实际意义。 
    内联函数要么直接用定义做声明,要么让声明和定义在一处(一般是头文件中) 

    4、如果构造函数在类的外部定义,且不加inline关键字,跟在类的内部定义有没有区别? 
    没有区别,只要跟类的定义在同一个头文件中。

    5、在以下几种情况中,inline函数有可能被编译器生成一个正常的函数
    函数递归,外部使用函数地址,函数代码段太长,函数是虚函数

  • 相关阅读:
    Storm-源码分析-Topology Submit-Supervisor
    Storm-源码分析- Multimethods使用例子
    Storm-源码分析- Storm中Zookeeper的使用
    Storm-源码分析-EventManager (backtype.storm.event)
    Storm-源码分析-Topology Submit-Nimbus
    Storm-源码分析-Topology Submit-Nimbus-mk-assignments
    Storm-源码分析- Component ,Executor ,Task之间关系
    决策树之 C4.5
    JSBridge深度剖析
    【工具类】Date、Long、String 类型互转
  • 原文地址:https://www.cnblogs.com/lakeone/p/5933551.html
Copyright © 2011-2022 走看看