【发布时间】:2011-07-24 17:21:14
【问题描述】:
我的程序输出唯一不正确的是有一个“!” “钓鱼”之后。我试过调试它,但从来没有'!'在记忆中。
这是这一行的输出
One more: gone down to the fishing! hole
这里是s6和s7的创建
MyString s6("gone ");
MyString s7("fishing");
这是产生语句的行
cout << "One more: " << s6 + "down to the " + s7 + " hole" << endl << endl;
这里是
ostream& operator<<(ostream& leftOp, const MyString& rightOp)
{
leftOp << rightOp.stringArray;
return leftOp;
}
这里是+运算符重载函数
MyString MyString::operator+(const char* rightOp) const
{
MyString result; // new object used to store result
result.stringSize = stringSize + strlen(rightOp);
// if the string does not fit in the array
if( result.stringSize > result.stringCap )
{
delete[] result.stringArray;
result.stringCap = ( stringSize + 15 ) & ~15;
result.stringArray = new char[stringCap + 1];
}
strcpy(result.stringArray, stringArray);
strcat(result.stringArray, rightOp);
return result;
}
s7 在程序的其他任何地方都没有调用,所以我认为不需要显示更多代码。任何帮助将不胜感激。
【问题讨论】:
-
我应该补充一点,使用 + 运算符的每一行都可以正常工作。
-
你能告诉我们
-
在原帖中添加了
-
顺便说一句,这可能不是“堆损坏”...
-
在这一行
result.stringArray = new char[stringCap + 1];,你使用什么stringCap作为结果?
标签: c++ string overloading operator-keyword