| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 855 人关注过本帖
标题:类的运算符重载问题
取消只看楼主 加入收藏
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
结帖率:95.65%
收藏
已结贴  问题点数:6 回复次数:4 
类的运算符重载问题
出现非常诡异的问题,下面的析构函数一旦删除,那么文件运行就正常,否则就报错!!!
不知道是什么情况,请大神帮忙!!!
#include<iostream.h>
#include<string.h>
class String
{
 char *str;
 int len;
 public:
     String(char *s)//构造函数
     {
       len=strlen(s);
       str=new char [len+1];
       strcpy(str,s);
      
     }
     String()
     {
      str=NULL;
      len=0;
     }
     ~String()//析构函数
     {     if (str) delete []str;}
   
     String &operator=(String&s)//等号运算符重载
     {
      if(this==&s) return *this;
      if (str) delete []str;
     
      if(s.str)
      {
       len=strlen(s.str);
       str=new char [len+1];
       strcpy(str,s.str);
      }
      else
      {   
        str=NULL;
        len=0;
      }
      return *this;

      
     }

     void show()//显示函数
     {
     
      cout<<"字符串为:"<<endl;
      cout<<str;
    }
   
     void set(char *s)
     {
      delete []str;
      len=strlen(s);
      str=new char[len+1];
      strcpy(str,s);
      
     }
     
     
     friend String operator+(String &,String &);//友元函数 +重载函数



};
   
   
 

      String operator+(String &s1,String &s2)
     {
      String temp;
      temp.len=s1.len+s2.len;
      temp.str=new char [temp.len+1];
      strcpy(temp.str,s1.str);
      strcat(temp.str,s2.str);
      return temp;
     }

   
 

     void main()
     {
      String str1("hello"),str2("shanghai"),str3;
     
      str3=str1+str2;
      str3.show();

      
      
     

   
     
     }

搜索更多相关主题的帖子: include public 
2012-04-24 22:51
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
补充问题!!!!!

 String &operator=(String&s)//等号运算符重载
      {
       if(this==&s) return *this;
其中if的这行,为什么是this==&s,除了这句话还能换别的表达方式吗?

 
2012-04-24 22:57
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 3楼 草狼
不行啊,还有没有用啊,你试过了吗?


[ 本帖最后由 教皇 于 2012-4-25 13:15 编辑 ]
2012-04-25 13:11
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 5楼 lonmaor
还是不行啊!我这里编译都通不过
2012-04-25 14:21
教皇
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2011-10-6
收藏
得分:0 
回复 9楼 cqb_19901201
我自己发现错误了,少了一个拷贝构造函数,还有一个地方越界了。。。
2012-04-26 20:54
快速回复:类的运算符重载问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026382 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved