【发布时间】:2012-04-28 21:18:07
【问题描述】:
请帮忙完成这个赋值重载函数的执行。
说明如下:
赋值运算符 (=) 将源字符串复制到目标字符串中。请注意,目标的大小需要调整为与源的大小相同。
加法 (+) 和赋值 (=) 运算符都需要能够进行级联运算。这意味着 String3 = String1 + String2 或 String1 = String2 = String3 应该可以工作。
这是我的 .cpp 文件:
int MyString::Length()
{
int counter(0);
while(String[counter] != '\0')
{
counter ++;
}
return (counter);
}
MyString& MyString::operator=(const MyString& rhs)
{
if(this != &rhs)
{
delete [] String;
String = new char[rhs.Length()];
for(int i = 0; i <rhs.Length()+1 ; i++)
{
String[i] = rhs.String[i];
}
}
return *this;
}
在main.cpp文件中被调用:
String1=String2=String3;
我觉得我好像错过了什么。求助!!
【问题讨论】:
-
在异常面前思考正确性!
-
具体是什么问题?
-
您正在保留
this->Size字符,您正在复制this->counter字符。不应该是rhs.Size还是rhs.counter? -
你也忘了更新那些变量
-
你有 4 个问题,本质上问的是同一件事。
标签: c++ operator-overloading cascade assignment-operator