c++ - strcpy/strcat 奇怪字符输出

标签 c++ operator-overloading

我有以下自定义 String 类的代码:

const String &String::operator+(const String &right)
{
   String temp;
   temp.length = length + right.length;
   temp.sPtr = new char [temp.length + 1];
   assert( sPtr != 0 );
   strcpy(temp.sPtr, sPtr);
   strcat(temp.sPtr, right.sPtr);
   return temp;
}

其中 sPtr 是一个 char*

但是,当我在两个字符串上执行这个函数时,我得到了乱码,如下所示:

 ]√Hâ«Ö“x˘" = "The date is" + " August 1, 1993

我完全不知道发生了什么。我读过一些关于在连接结果字符串之前获得垃圾字符的人的评价,但我完全不明白为什么整个字符串都是垃圾字符。

任何帮助都会很棒。提前致谢!

最佳答案

不要通过引用返回“临时”对象。一旦函数结束,临时字符串将被取消分配,并且由于该字符串被设置为临时地址,它就变成了垃圾。

关于c++ - strcpy/strcat 奇怪字符输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13078100/

相关文章:

c++ - Opencv Warp透视全图

c++ - C++ 中的 Play again 选项不适用于数字猜谜游戏

c++ - 拆分大文件而不复制?

c++ - 为什么 "<<"运算符可以被继承而 ">>"运算符不能?

使用模板的 C++ 重载输出运算符

c++ - 从 boost::process 到 boost::child 的信号传播

c++ - (c++) 需要帮助为我的类 Polynomial 重载 operator+

c++ - 多项式类 C++ 的问题

c++ - C++复合设计模式中的操作重载

c++ - 如何将 std::array 转换为一个点?