这是我的代码..给我一个警告说'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;
}
答案 0 :(得分:2)
您将返回对str
的引用,这是您函数中的局部变量。
返回副本:MyString operator+(char *s)
。
答案 1 :(得分:0)
另一个小故障是strcpy(tmp,s),这是不正确的。将strcpy改为strcat可能是正确的。