Avatar ·

¿Qué es la 'Regla de los Tres' en C++ y por qué su violación provoca fugas de memoria?

¡Hola! Empecé a estudiar C++ y me encontré con un error que no entiendo. Tengo una clase `SimpleString` que almacena una cadena dinámica. Escribí el constructor y el destructor, pero cuando intento copiar un objeto o asignar un objeto a otro, el programa se cuelga o muestra basura. Aquí hay un ejemplo de código: ```cpp #include #include class SimpleString { public: char* data; SimpleString(const char* str) { data = new char[strlen(str) + 1]; strcpy(data, str); std::cout << "Constructed: " << data << std::endl; } ~SimpleString() { delete[] data; std::cout << "Destructed" << std::endl; } }; int main() { SimpleString a("Hello"); SimpleString b = a; // Copia SimpleString c("World"); c = a; // Asignación return 0; } ``` El programa se cuelga con un error double free o muestra cadenas distorsionadas. Entiendo que el problema es que después de la copia, dos objetos apuntan al mismo