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