C++愤恨者札记1――类对象作为函数参数的数据传递过程(二)

2014-11-24 11:37:48 · 作者: · 浏览: 1
rep stos dword ptr es:[edi] ;以是为局部变量空间初始化,debug版特有的

00a41a7e c7450c64000000 mov dword ptr [ebp+0Ch],64h ;n.data1 = 100; 显示ebp+0Ch是参数n的起始地址
00a41a85 c7451064000000 mov dword ptr [ebp+10h],64h ;n.data2 = 100;
00a41a8c c7450864000000 mov dword ptr [ebp+8],64h ;a = 100;
00a41a93 c745280a000000 mov dword ptr [ebp+28h],0Ah ;b = 10;

00a41a9a 5f pop edi
00a41a9b 5e pop esi
00a41a9c 5b pop ebx

00a41a9d 8be5 mov esp,ebp
00a41a9f 5d pop ebp
00a41aa0 c3 ret

--------------------------------------------------
总结:
类对象做为函数参数时,是被存放在栈上的,不影响实参的数据。
若未重写拷贝构造函数,类的其它构造函数将不会被调用。形参的数据是通过内存拷贝传递的。若重写了,拷贝构造函数将会在初始化形参时被调用,不再进行内存拷贝工作。

作者:tms_li