Avatar ·

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