У меня есть класс, в нем есть деструктор который освобождает память. В классе перегружены некоторые операторы, но в них формируется объект и возвращается. Соответственно вызывается деструктор:
Код: Выделить всё
Binary Binary::operator+ (Binary &b) {
<...>
Binary c;
<...>
return c;
}
Я перегрузил операторы присваивания и копирования:
Код: Выделить всё
class Binary {
<...>
Binary(const Binary &a);
Binary operator= (const Binary &a);
<...>
};
Binary Binary::operator= (const Binary &a) {
n = a.n;
bin_len = a.bin_len;
bin = new char[bin_len];
memcpy(bin, a.bin, bin_len);
return *this;
}
Binary::Binary(const Binary &a) {
n = a.n;
bin_len = a.bin_len;
bin = new char[bin_len];
memcpy(bin, a.bin, bin_len);
}
Оно вроде работает, но если я не буду перегружать оператор копирования, то ничего не будет работать. Что вообще происходит? Внятных примеров я так и не нашел, что в книгах, что в интернете.