Re[2]: Перегрузка операций
От: Гарин Георгий  
Дата: 23.01.02 09:27
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Гарин Георгий, Вы писали:


ГГ>> Здравствуйте. I need help.

ГГ>> Перегрузил операции присваивания и умножения для класса многочленов.

А>Скорее всего вы используете конструкцию типа C = A * B и соответственно результат A * B помещается сначала в некую временную переменную, которая затем присваивается в C, и после присваивания для нее (врем. пер.) вызывается деструктор.

А>Т.е. фактически получается:

А>MyClass *TMP = new MyClass(operator*(A, B)); // или A.operator*(B) (это не важно)

А>C.operator=(*TMP);
А>delete TMP;
Да, видимо так оно и происходит. Но вызывается несколько деструкторов для А,В,что-то еще (наверное эта временная переменная) и С. Вот поэтому-то я и просил кусок кода, чтобы посмотреть как это делается by example.
ps: А это не может происходить из-за передачи параметров. Т.е. в справочнике написано, что надо передавать параметры по ссылке, может я в этом напутал...

Все равно спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.