Cita:
Iniciado por amchacon Los comentarios los veo correctos. Aunque en un código profesional habría que poner la definición y implementación en archivos distintos (por cuestión de orden y mantener el encapsulamiento).
Los operadores + no son correctos porque estás creando nuevas clases sobre la marcha. Has perdido la referencia de la clase original, tienes que devolver la misma clase.
Yo lo haría directo:
Código C++:
Ver originalCadena Cadena::operator+(const char *C)
{
if (!C)
return *this;
delete [] cad; // Borramos la antigua cadena
cad
= new
char[strlen(C
)+strlen(this
->cad
)+1]; // creamos una nueva
return *this;
}
Nota: No es necesario usar el puntero this para acceder al miembro cad de la clase.
Muchas gracias por tu comentario amchacon, me gustaría consultarte una ultima cosa.
Veras, recien estoy empezando a manejarme con punteros de una manera, digamos
"más prolija". He visto que has usado la función new para reservar más espacio en la memoria dinámica para datos tipo char. La consulta aquí es que...
Al utilizar
new, ¿Simplemente se reserva más espacio en la memoria sin afectar a los datos que hay en ella?, es decir, ¿Todos los datos que hay en "cad" siguen intactos con la diferencía que ahora tengo más espació en los arrays verdad?, ¿como un "realloc"?.
Otra cosa, delete [], lo que hace es eliminar la reserva de espació en la memoria y new genera nueva reserva de espació en la memoria dinamica... ¿Todo sin afectar a los datos que había en esos espacios de memoria verdad?.
Simplemente tengo esa duda al ver que usaste delete, luego new y luego concatenaste a
cad