zoukankan      html  css  js  c++  java
  • c++内联成员函数问题(转载)

    作者:蓝色
    链接:https://www.zhihu.com/question/29809743/answer/45701907
    来源:知乎

    首先inline是实现修饰符,而非声明修饰符,所以应该用于实现部分的修饰(你也可以放置inline在声明,但是没有必要),我相信C++ Primer应该解释的很清楚了。

    那么为什么不能screen.h声明函数move,screen.cpp实现move呢?因为inline的代码是直接展开插入到被调用的地方,而非如普通函数的调用一样,需要发生栈操作。即会先去执行被调用函数,再转回来继续执行主调函数。那么,这个时候,你要么在main.cpp也如同x.cpp一样再次inline实现一次这个函数,要么你就干脆只在x.h的class body里面实现了,当然如果你和我一样有“代码洁癖”的话,可以像我一样先在class里面声明,再在class body外面实现:LLVMPascalCompiler/scanner.h at master · FrozenGene/LLVMPascalCompiler · GitHub

    其实我觉得inline现在蛮鸡肋的了,编译器已经进化到今天这个地步了,我认为完全可以交给编译器自己去决定是否inline(因为即使你给了inline,也只是给编译器提醒可以inline,最后inline与否还是需要编译器自己来决定),或许某一天inline将会和register关键字一样退出舞台吧。

  • 相关阅读:
    StateListDrawable状态选择器
    Shape
    每周随笔
    每周随笔
    每周随笔
    每周随笔
    每周随笔
    每周随笔
    每周随笔

  • 原文地址:https://www.cnblogs.com/jixiaohua/p/12563458.html
Copyright © 2011-2022 走看看