首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

满载操作符+出错

2013-07-04 
重载操作符+出错1.String operator+(const String &st1,const String &st2){String temptemp.strnew cha

重载操作符+出错
1.     String operator+(const String &st1,const String &st2)
        {
    String temp;
    temp.str=new char [st1.len+st2.len+1];
    strcpy(temp.str,st1.str);
     for(int i=0;i<st2.len+1;i++)
    {
temp.str[st1.len+i+1]=st2.str[i];
    }
    return temp;
        }
重载+号实现两段string接在一起,结果输入后光标闪动;
正确程序应该是:
        String operator+(const String &st1,const String &st2)
        {
        int len = st1.len + st2.len;
        char * ps = new char [len + 1];
        std::strcpy(ps, st1.str);
std::strcat(ps,st2.str);
String temp(ps);
return temp;
        }

困惑时第一段程序哪错了?验证中for循环没有错误
[解决办法]
temp.str[st1.len+i+1]=st2.str[i]; 
temp.str 里不应该加1,len是长度。单放置字符是重0开始。
[解决办法]


String operator+(const String &st1,const String &st2)
{
String temp;
temp.str=new char [st1.len+st2.len+1];
strcpy(temp.str,st1.str);
for(int i=0;i<st2.len+1;i++)
    {
temp.str[st1.len+i]=st2.str[i];//这句错了。。不需要加1。。自己画个图就明白了。。
    }
    return temp;
}

热点排行