O que é a idiomática copy-and-swap em C++?
Olá a todos! Estou estudando C++ e tentando entender a escrita correta do construtor de cópia e do operador de atribuição. Li sobre a regra dos três, mas frequentemente encontro menção a alguma idiomática "copy-and-swap".
Eu tenho uma classe simples que gerencia memória dinâmica:
```cpp
class String {
public:
String(const char* str = "") {
size = strlen(str);
data = new char[size + 1];
strcpy(data, str);
}
~String() { delete[] data; }
// Construtor de cópia
String(const String& other) {
size = other.size;
data = new char[size + 1];
strcpy(data, other.data);
}
// Operador de atribuição - é aqui que tenho problemas
String& operator=(const String& other) {
// Como fazer corretamente?
if (this != &other) {
delete[] data;
size = other.size;
data = new char[size + 1];
strcpy(data, other.data);
}
re