我正在尝试将字符数组附加到字符串,使字符串保持完整,运算符重载+

时间:2013-08-08 23:22:56

标签: c++

这是我的代码..给我一个警告说'str'引用与本地变量'str'相关的堆栈内存返回...另外,我想确定我的逻辑是好的还是更简单方式,我会非常感谢一些帮助,以了解更多的方法..谢谢!

void CopyString(char *s)
{
    delete szArr;
    if (s)
    {
        szArr = new char[strlen(s)+1];
        strcpy(szArr,s);
    }
    else
    {
        szArr = new char[1];
        szArr[0]=0;
    } 
}


MyString& operator+(char *s){
    if (!s)
        return *this;
    char *tmp=new char[strlen(szArr)+strlen(s)+1];
    strcpy(tmp, szArr);
    strcat(tmp, s);
    MyString str(tmp);
    delete tmp;
    return str;
}

2 个答案:

答案 0 :(得分:2)

您将返回对str的引用,这是您函数中的局部变量。

返回副本:MyString operator+(char *s)

答案 1 :(得分:0)

另一个小故障是strcpy(tmp,s),这是不正确的。将strcpy改为strcat可能是正确的。