CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

请教关于自赋值的问题!

楼主zhyang(yang)2003-09-04 12:38:25 在 C/C++ / C语言 提问

请问在程序中如果出现自赋值的情况将出现什么危害?  
   
  一般情况下怎么样才能避免自赋值。  
   
  请帮小弟看看下面的这段程序,他会出现自赋值的问题吗?如果出现,怎么写就能避免自赋值的出现?谢谢各位。  
   
   
  unsigned   tring::length()const  
  {  
      return   cstrLen(buffer);  
  }  
  void   tring::operator=(const   tring&right)  
  {  
      const   unsigned   rightLength=right.length();  
      if(right.length()>=buflen)  
      {  
          delete   []buffer;  
          buflen=1+rightLength;  
          buffer=new   char[buflen];  
          assert(buffer!=0);  
      }  
      unsigned   i=0;  
      for(;right.buffer[i]!='\0';i++)  
          buffer[i]=right.buffer[i];  
      buffer[i]='\0';  
  } 问题点数:0、回复次数:2Top

1 楼RookieStar(Yukon)回复于 2003-09-04 12:54:18 得分 0

昨天好像问过了吧。。。再说一遍:  
   
  一般对于自赋值只需在重载的operator   =函数中加上  
  if   (this==&right)    
      return   *this;  
   
  你这里由于返回void,故return;  
   
  想要详细研究一下的可以去看Scott   Meyers《Effective   C++》中的相关章节!!!Top

2 楼sevecol(sevecol.blogone.net)回复于 2003-09-04 12:57:05 得分 0

这里要注意的一点就是如果从载了&的操作符,那么if   (this==&right)就要小心了。Top

相关问题

  • 自定义控件赋值???
  • 文本框自动赋值?
  • 自定义类型怎么赋值??
  • 用strmove给一个pchar赋值,这个pchar的未赋值的部分是否自动设为#0?
  • 8086宏汇编,关于SS:SP的赋值问题,什么情况下系统自动赋值?等等
  • 如何给主关键字自动赋值?
  • 关于C++中的自我赋值的问题
  • 关于运算符重载,为什么要检查自赋值?
  • 如何在自定义的结构间赋值
  • 自己定义的class怎莫不能赋值啊

关键词

  • 赋值
  • tring
  • buflen
  • buffer
  • 出现
  • right
  • unsigned
  • const
  • length

得分解答快速导航

  • 帖主:zhyang

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo