bruceteenbruceteen.blog.chinaunix.net
bruceteen
全部博文(158)
2012年(158)
CU官方博
gaokeke1
cdx08222
ichao121
Bsolar
tomcodin
xiao0613
tonyxuxu
redman27
ximiligi
分类: C/C++
2012-11-23 16:36:40
上一篇:这世界上还有没有比中移动更无耻的?
下一篇:字符串内部查找函数
网友评论2012-11-23 16:38:44
pcasa 我猜想可能是出于代化的考虑吧, 连续两次执行call A::~A (41114Ah) , VC2008也是一样 { foo( A() ); 0041167D lea ecx,[ebp-0DDh] 00411683 call A::A (411122h) 00411688 mov dword ptr [ebp-0E8h],eax 0041168E mov  
网友评论2012-11-23 16:38:34
周星星 foo (A());这里A()会产生一无名对象,由于参数不是引用传递,所以用完就析构了. ------ 如果这样的话,那就应该是 A() ~A() --- ~A() ~A() 另外,如果将 //A( const A& ) { cout << "A(A)" << endl ;} 前的//去掉,它就正常了; 还有,无论代码怎么写,其他编译器(比如g++)是正常的
网友评论2012-11-23 16:38:24
sjdev foo (A());这里A()会产生一无名对象,由于参数不是引用传递,所以用完就析构了.同样,因为不是引用传递,所以需要产生一个无名对象的copy.在foo()调用结束后,又返回了一个.
网友评论2012-11-23 16:38:17
周星星 "foo()的参数变量a 的析构" 我已经算上了呀,它一共有三次析构
网友评论2012-11-23 16:38:10
pcasa 一次是foo()的参数变量a 的析构 另一次是foo()返回值的析构
登录 注册