定义在类里面的成员函数绝对会成为内联的么?
本帖最后由 shendaowu 于 2013-08-26 16:38:34 编辑
还是和inline一样只是个摆设。
[解决办法]
转载,仅供参考:
(1) inline关键字的一个作用是让函数内联展开。在这一点上,它是对编译器的一个建议性(non-binding)关键字,实际不一定起作用。
(2) 它的另一个很重要的作用就是,使得一个函数在整个程序中可以被多次定义而不产生redefinition 错误。而这一个作用是强制约束的,写了就管用。
------------------------------------------
一般而言,处理一个inline函数,有两个阶段:
(1)分析函数定义,以决定函数的本质的inline能力:
如果函数因其复杂度,或因其建构问题,被判断不可成为inline,它会被转 为一个static函数,并在“被编译模块”内产生对应的函数定义。链接器会将被产生出来的重复东西清理掉,然而一般来说,目前市面上的链接器并不会将 “随该调用而被产生出来的重复调试信息”清理掉。
(2) 真正的inline函数扩展操作是在调用的那一点上。这会带来参数的求值操作以及临时性对象的管理。
同样是在扩展点上,编译器将决定这个调用是否“不可为inline”。
[解决办法]
也不是摆设.如果inline在类的声明之外的话.根据1楼的解答也有可能会让编译器处理成内敛函数.
如果函数的声明和实现是一起的那么inline就是一个摆设
[解决办法]
貌似之前也有一个哥们问类似的问题。声明为inline,但是编译器不一定那么做
[解决办法]
绝对会内联,这个标准规定了的,不要听那些基本功都不扎实的出来忽悠你。
[解决办法]
同inline
[解决办法]