首页 > 编程语言 > 详细

c++内联成员函数问题(转载)

时间:2020-03-25 09:31:51      阅读:51      评论:0      收藏:0      [点我收藏+]

作者:蓝色
链接: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关键字一样退出舞台吧。

c++内联成员函数问题(转载)

原文:https://www.cnblogs.com/jixiaohua/p/12563458.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!