会员列表 统计排行 帮助
  • 224阅读
  • 3回复

[提问]QList 改变元素成员值时,怎么地址还变了?

楼层直达
级别: 新手上路


书上说QList 等号赋值时,是共用元素,第一个图可以证实,qlist1 和qlist2的0号元素地址都是一样的;
但是改变qlist1[0]的一个成员值时,居然qlist1和qlist2的0号元素地址就不一样了。。。
这是为何?
级别: 精灵王
只看该作者 1楼 发表于: 01-23
Qt使用了隐式共享,所以说在qlist2=qlist1时,只要二者不修改,二者的数据只占用一份的数据
然后既然修改了,所以两个list就不能再占用同一份数据了
就像QString a="a"; QString b=a; a="X";这样执行完如果a和b再是同样的值就有些奇怪了吧……QString可以看做QChar的容器,而你的QList<ca>则是ca的容器,这样理解应该能行得通吧……
级别: 新手上路
只看该作者 2楼 发表于: 01-23
引用
引用第1楼roywillow于2012-01-23 19:18发表的  :
Qt使用了隐式共享,所以说在qlist2=qlist1时,只要二者不修改,二者的数据只占用一份的数据
然后既然修改了,所以两个list就不能再占用同一份数据了
就像QString a="a"; QString b=a; a="X";这样执行完如果a和b再是同样的值就有些奇怪了吧……QString可以看做QChar的容器,而你的QList<ca>则是ca的容器,这样理解应该能行得通吧……

原来是这样啊。谢谢您
级别: 侠客
只看该作者 3楼 发表于: 01-31
~~~~~manual有讲哦~~嘿嘿
蠢笨的愚钝~
快速回复

限100 字节
 
认证码:
验证问题: 11 - 2 = ? 正确答案:9
上一个 下一个