¿Qué es el idiom copy-and-swap en C++?
¡Hola a todos! Estoy aprendiendo C++ y tratando de entender la escritura correcta del constructor de copia y el operador de asignación. Leí sobre la regla de tres, pero a menudo encuentro mención de algún idiom "copy-and-swap".
Tengo una clase simple que gestiona memoria dinámica:
```cpp
class String {
public:
String(const char* str = "") {
size = strlen(str);
data = new char[size + 1];
strcpy(data, str);
}
~String() { delete[] data; }
// Constructor de copia
String(const String& other) {
size = other.size;
data = new char[size + 1];
strcpy(data, other.data);
}
// Operador de asignación - aquí tengo problemas
String& operator=(const String& other) {
// ¿Cómo hacerlo correctamente?
if (this != &other) {
delete[] data;
size = other.size;
data = new char[size + 1];
strcpy(data, other.data);
}
re