O que é a 'Regra dos Três' em C++ e por que sua violação leva a vazamentos de memória?
Olá! Comecei a estudar C++ e me deparei com um erro estranho. Tenho uma classe `SimpleString` que armazena uma string dinâmica. Escrevi o construtor e o destrutor, mas quando tento copiar um objeto ou atribuir um objeto a outro, o programa trava ou exibe lixo. Aqui está um exemplo 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; // Cópia
SimpleString c("World");
c = a; // Atribuição
return 0;
}
```
O programa trava com um erro double free ou exibe strings distorcidas. Entendo que o problema é que, após a cópia, dois objetos apontam para o mesmo
No answers yet.
Faça login para deixar uma resposta