Problemas de C++, ¡urgentes en línea! ! ! ! ! !
nuevo es el espacio solicitado.
eliminar es liberar espacio.
eliminar []str es incorrecto, debería ser eliminar str;
Porque agregar [] liberará la matriz y str es un puntero, no una matriz.
La sobrecarga = en el primer piso no considera la autorreplicación, lo que resulta en pérdidas de memoria.
1. Para definir a=a+b, primero necesita definir dos funciones:
Copiar constructor y sobrecarga del operador de asignación.
2. La suma es una concatenación de cadenas.
#include
#include
Usar espacio de nombres std;
clase Mystring
{
público:
Mystring(char *s)
{
str=new char[strlen(s)+ 1 ];
strcpy(str,s);
}
Mystring(Mystring & Mys)
{
str=new char[strlen(Mys.str)+1];
strcpy(str,Mys.str);
}
Mystring & operador=(Micadena y miS);
Micadena y operador+(Micadena y miS);
~Micadena()
{
eliminar str;
}
privado:
char *str;
};
Mystring & Mystring ::operator=(Micadena y miS)
{
if(this!=& miS)
{
eliminar cadena;
str= nuevo carácter[strlen(myS.str)+1];
strcpy(str,myS.str);