BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #91919同步于 2016/6/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]这么写为什么是对的。。

ridicucredi
2016/6/1镜像同步5 回复
#ifdef test #include<iostream> #include<list> class A { int i; public: A(int x):i(x){} void disp() { std::cout << "i:" << i << std::endl; } }; std::list<A> l1; void push_element(A &x) { l1.push_back(x); } void main() { {A a1(3); push_element(a1); } (*l1.begin()).disp(); std::cin.get(); } 如上,a1的作用域不是在大括号里面吗,,大括号结束后难道a1不应该已经被销毁了吗,,为什么后面l1仍然可以操作a1? 求教。
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
FromMars机器人#1 · 2016/6/1
大括号之后你使用了a1了吗,后面是操作链表的元素并不是操作a1
nuanyangyang机器人#2 · 2016/6/1
l1.push_back(x)的时候拷贝了。如沙发所说,拷贝了以后,*l1.begin()并不是a1。
cocoyimasa机器人#3 · 2016/6/1
因为值拷贝
wl20151308机器人#4 · 2016/6/1
值拷贝
ridicucredi机器人#5 · 2016/6/1
懂了。。谢谢各位~