【发布时间】:2015-11-13 05:01:00
【问题描述】:
我正在为学校创建一个包含 2 种数据类型、一个 int 长度和一个 char* buf 的字符串类。
其中一个构造函数要求我重载 + 运算符。
String s10("DEF");
String t10('H');
String u10("ABC" + s10 + "G" + t10 + 'I');
我用以下代码重载了 + 运算符
String& operator + (const String& s1, const String& s2){
String equals;
equals.length = s1.length + s2.length;
equals.buf = new char[equals.length + NULL_OFFSET];
strcpy(equals.buf, s1.buf);
strcat(equals.buf, s2.buf);
return equals;
}
调用String u10时,成功组合了2个String对象,并以String equals的形式返回。
但是当 equals 变成带有“G”的 + 时,它的内存地址会丢失(或者它可能被删除了,我不确定)
【问题讨论】: