共有回帖数 0 个
-
c++0x的右值引用是个很好的特性,但是我认为现在的设计不近我意(也许大多数人是认为它现在是做得不错的,所以我不敢说"不近人意")
我觉得我目前的看法也是称不上成熟,甚至也许会turn out 2 b 很肤浅的
,提出以供大家讨论
来了
直接以代码开始,又是老套的String案例:
String::String(String&& s):length(s.length),characters(s.characters){
s.characters=0;
}
好了,这样以后,s壮烈地牺牲
问题来了:
s析构时,自然会delete[] characters,但这里的characters是0
在看第一个关于rvalue ref的代码实例前,我便无法想象那个s析构时怎能不乱套(显示这个s处在invalid态),因为并没有听说rvalue的析构会被编译器特殊处理.那对这样一个处于invalid态的对象,我们仍然走和正常对象相同的析构流程,我们怎能保证代码行为的正确性?
然后我才看了现实中的情况,它说,characters是0不要紧,因为c++保证delete[] 0不会出事,又说,length与characters不符也不要紧,因为反正它都是要死的人了
Aha!
你竟然把析构行为的正确性建立在c++对delete[] 0的行为的保证上!
那么请问如果c++没有保证怎么办!
先写到这里,我怕写多了大家都没耐心看,不如先看看大家怎么看
楼主 2016-07-08 10:35 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知