返回引用的一些好处(编程日记)

来源:互联网 发布:net软件开发 编辑:程序博客网 时间:2024/06/20 00:27

在实现一些字符串操作的类中,经常返回一些引用,这样都有哪些好处呢?
 类大致如此
 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';