[问题] 建构解构的基本问题

楼主: dreamboat66 (小嫩)   2016-04-28 14:43:06
https://ideone.com/9ufeMX
请问上述的程式码
我不确定1和2 真正被push到stack上
bar和foo谁先被push(我观念上1和2都是 foo先 再来是bar)
而我从印出this似乎1,2两个push到stack的顺序也是一样(但不知道为啥最佳化后 stack
address是小到大)
=============以上 不知道结论有没有错============
但以我的观念, 我是觉得先被push就是最后被解构
但用stack的观念上我无法解释 为什么解构顺序会有差别?
如果从code来看, 确实是很合理 但不知道为什么stack就说不通?
中间有什么盲点我搞错了? 或是因为一些手段 导致我光看this的位址是不准确的?
谢谢
作者: CaptainH (Cannon)   2016-04-28 18:02:00
从来就没这回事吧
作者: CoNsTaR ((const *))   2016-04-29 09:51:00
auto 变量的解构顺序和建构顺序相反内建型别static变量建构/解构时间就是程式开始/结束的时间非POD型别的全域static变量建构时间和内建全域static相同非 POD的 local static 变量第一次用到的时候建构但是全域和 static 变量都不保证建构时间 所以解构时间也无法确定
楼主: dreamboat66 (小嫩)   2016-04-30 06:50:00
问题就是 这边建构顺序跟解构顺序不一样啊,不能用stack push pop 想吗?
作者: CoNsTaR ((const *))   2016-04-30 10:45:00
建构解构顺序相反 这是规定
楼主: dreamboat66 (小嫩)   2016-04-30 20:18:00
log显示没有相反啊 @@
作者: steve1012 (steve)   2016-05-11 08:23:00
有相反啊 只是你先call 了bar 的constructor 才printFoo 被call 才call bar

Links booklink

Contact Us: admin [ a t ] ucptt.com