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];
}

2个不同的地方:
1. 返回值不同
第一个函数返回char &
第二个函数返回char
2.是否可以改变调用此函数的对象
第一个函数可能会改变调用对象
第二个函数不会改变调用的对象,该对象为const类型

第一个返回指针

指向string一个字符的地址

第二个返回 字符

MyString str1("abc");
MyString const str2("abc");

str1[1] = '*'; // 调用第一个
char ch=str2[1]; // 调用第二个