C++中的模拟String类,重载[]这两个成员函数有什么不同?
来源:百度知道 编辑:UC知道 时间:2024/06/04 09:53:45
char & MyString::operator[](unsigned short offset)
{
if (offset > itsLen)
return itsMyString[itsLen-1];
else
return itsMyString[offset];
}
char MyString::operator[](unsigned short offset) const
{
if (offset > itsLen)
return itsMyString[itsLen-1];
else
return itsMyString[offset];
}
{
if (offset > itsLen)
return itsMyString[itsLen-1];
else
return itsMyString[offset];
}
char MyString::operator[](unsigned short offset) const
{
if (offset > itsLen)
return itsMyString[itsLen-1];
else
return itsMyString[offset];
}
2个不同的地方:
1. 返回值不同
第一个函数返回char &
第二个函数返回char
2.是否可以改变调用此函数的对象
第一个函数可能会改变调用对象
第二个函数不会改变调用的对象,该对象为const类型
第一个返回指针
指向string一个字符的地址
第二个返回 字符
MyString str1("abc");
MyString const str2("abc");
str1[1] = '*'; // 调用第一个
char ch=str2[1]; // 调用第二个