共有回帖数  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++对delete[] 0的行为的保证上!
 那么请问如果c++没有保证怎么办!
 先写到这里,我怕写多了大家都没耐心看,不如先看看大家怎么看
 楼主 2016-07-08 10:35 回复 
 
 
   
             
                  
                  
 
 
 
     
	 
  
	Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
	
	意见反馈 | 
	关于直线 | 
	版权声明 | 
	会员须知