签到

05月06日
尚未签到

共有回帖数 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 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知