在实现一些字符串操作的类中,经常返回一些引用,这样都有哪些好处呢?
类大致如此
class String
{
private:
char *str;
int len;
static int num_strings;
public:
...
};
1. 在重载 = 操作符时,可以返回引用,如
String & ::String operator=(const StringBad &st)
{
if( this==&st)
return *this;
delete[] str; // 释放原来指向的内存
len=strlen(st.str);
str=new char [len+1];
strcpy(str,st.str);
return *this;
}
因为这样可以实现连续赋值 s0=s1=s2; s0.operator=(s1.operator=(s2);
2.重载 []
char & String:: operator[](int i)
{
if(i<0||i>len)
throw"查询字符位置出错";
else
return str[i];
}
这样的话可以可以便于给特定的元素赋值
如 String s("might");
s[0]='r';
这时相当于 s.operator[][0]=='r';
这里将r 赋值给方法的返回值,函数返回值是指向s.str[0]的引用,等同于如下
s.str[0]='r';