在c++中,一个inline函数实体,在整个class 声明未被完全看到之前,是不会被评估求值的,也就是说,对于类里面内联的成员函数本身的分析,要等到class的声明完全结束之后才开始。
下面试c++源码:
extern int x;//外部声明的x class X { int main() { |
依据上面的规则,内联函数getX绑定的将会是成员变量x(float型)
下面我们只看成员函数getX的汇编码:
?getX@X@@QBEMXZ PROC ; X::getX, COMDAT ; 5 : float getX() const { push ebp ; 6 : return x; mov eax, DWORD PTR _this$[ebp];将对象xObj对象首地址给eax寄存器 ; 7 : } mov esp, ebp |
但是,这种规则对于成员函数的参数却不是这样。
下面是c++源码:
typedef int length;//全局 class X { int main() { |