Operator = overloading в C ++

В книге C ++ Primer он содержит код для массивов символов в стиле C и показывает, как перегрузить оператор = в статье 15.3 Operator = ].

String& String::operator=( const char *sobj )
{
   // sobj is the null pointer,
   if ( ! sobj ) {
      _size = 0;
      delete[] _string;
      _string = 0;
   }
   else {
      _size = strlen( sobj );
      delete[] _string;
      _string = new char[ _size + 1 ];
      strcpy( _string, sobj );
   }
   return *this;
}

Теперь я хотел бы знать, почему возникает необходимость возвращать ссылку String & , когда приведенный ниже код выполняет ту же работу без каких-либо проблем:

void String::operator=( const char *sobj )
{
   // sobj is the null pointer,
   if ( ! sobj ) {
      _size = 0;
      delete[] _string;
      _string = 0;
   }
   else {
      _size = strlen( sobj );
      delete[] _string;
      _string = new char[ _size + 1 ];
      strcpy( _string, sobj );
   }

}
  • , пожалуйста, помогите.
11
задан Sadique 28 March 2011 в 18:44
поделиться