La Web del Programador: Comunidad de Programadores
 
    Pregunta:  2807 - SOBRECARGA OPERADORES
Autor:  Alberto Ruiz
Buenas

He buscado informacion sobre la sobrecarga de operadores, pero no me llego a aclarar del todo. Podriais ponerme un ejemplo de sobrecarga para que el signo = igualara strings (strcpy)?

Es que he encontrado otros ejemplos, pero no los acabo de entender. Gracias por adelantado...

  Respuesta:  Gregorio Cobá Gala
La sobrecarga de operadores en algunas versiones de C++ no funcion con strings a menos que crees una clase de tipo string. El siguiente ejemplo me funciona muy bién en Borland C++ 3.1

#include
#include
#include

class string
{
public:

string( char * ); // Constructor
~string(); // Destructor

string& operator = ( char * ); // Se sobrecargo el operador =

char *_string;
unsigned long _length;

};

string::string( char *str )
{
unsigned int l;

_string = 0l;
_length = 0;

if( str )
{
l = strlen( str ):
_string = (char *)new[ l + 1 ];
strcpy( _string, str );
_length = l;
}
}

string& string::operator = (char *str )
{

unsigned int l;

if( str )
{
l = strlen( str );
if( l != _length )
{
delete _strings;
_strings = (char*)new[ l + 1 ];
_length = l;
}

strcpy( _strings, str );

}

return *this;

}

strings:~strings()
{

if( _strings )
delete _strings;

_strings = 0l;
_length = 0;
}


void main()
{
strings ptr( "Hola" );

printf( "%s\n", ptr._string ); // -> Hola

ptr = "Hola de nuevo" ;

printf( "%s\n", ptr._string ); // -> Hola de nuevo

}