¿Qué es el idiom Copy-and-Swap en C++ y cuándo usarlo?
¡Hola a todos! He empezado a aprender C++ y estoy tratando de entender la correcta sobrecarga del operador de asignación. Sé que debo verificar la autoasignación y liberar los recursos antiguos, pero mi código se ve horrible y cometo errores constantemente.
Aquí hay un ejemplo de mi clase para trabajar con un array dinámico:
```cpp
class MyArray {
int* data;
size_t size;
public:
MyArray(size_t s) : size(s), data(new int[s]) {}
~MyArray() { delete[] data; }
// Operador de asignación problemático
MyArray& operator=(const MyArray& other) {
if (this != &other) { // verificación de autoasignación
delete[] data; // liberamos los datos antiguos
size = other.size;
data = new int[size]; // asignamos nueva memoria
std::copy(other.data, other.data + size, data);
}
return *this;
}
// También tengo el constructor de copia
MyArray(const MyArray& other) : size(other.size), data(new int[other.size]) {
std::copy(other.data, other.data + other.size, data);
}
};
```
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Microservicios en JavaScript: arquitectura y práctica con Node.js