看了Thinking c++第10章的传值方式传递和返回这一节。不是很明白。
 午休的时候。写了一个例子,反编译了看看。
 #include <stdio.h>
class A
{
    public:
        int i;
        int ii;
        int iii;
};  
void fun1(A a){
    a.i++;
}  
int main(int argc, char *argv[])
{
    printf("start...\n");
    A a;
    a.i    = 1;
    a.ii   = 2;
    a.iii  = 3;
    fun1(a);
    printf("end...\n");
    return 0;
} 
 
  
 mov     dword ptr ss:[ebp-C], 1       ;i
mov     dword ptr ss:[ebp-8], 2       ;ii
mov     dword ptr ss:[ebp-4], 3       ;iii
sub     esp, 0C                                  
mov     eax, esp
mov     ecx, dword ptr ss:[ebp-C]
mov     dword ptr ds:[eax], ecx        
mov     edx, dword ptr ss:[ebp-8]        
mov     dword ptr ds:[eax+4], edx        
mov     ecx, dword ptr ss:[ebp-4]        
mov     dword ptr ds:[eax+8], ecx 
call       00401000                                  ;fun1的地址 
  
看了上面的汇编代码,基本都明白了。 
把对象A的成员变量按着定义的顺序一个一个的COPY到栈中。