Operador = sobrecarga en C ++

n el libro C ++ Primer, tiene un código para las matrices de caracteres de estilo C y muestra cómo sobrecargar el= operador en el Artículo 15.3 Operador =.

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

Ahora me gustaría saber por qué existe la necesidad de devolver una referenciaString & cuando este código a continuación hace el mismo trabajo, sin ningún problema:

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

}
por favor ayuda.

Respuestas a la pregunta(5)

Su respuesta a la pregunta