LINUX.ORG.RU

самопроизвольный вызов деструктора


0

0

есть простой класс char_string(класс символьной строки)

у него есть наследник arith_string(public)

в arith_string есть свои конструкторы и свой деструктор типа (delete [] str) str - поле типа char *

при вызове вот такого:

p->pole = arith_string(_str);

где p - структура, полем которого есть объект(pole) класса arith_string

_str - просто си-строка, преобразующий конструктор

сначала вызываются конструктор arith_string(char *) потом

arith_string& arith_string::operator= (const arith_string & _str)

а потом - как ни странно - ДЕСТРУКТОР, как это?!?!

anonymous

потому что был создан временный объект, потом уничтожен..

dilmah ★★★★★
()

А в классе arith_string есть оператор = или конструктор копирования?

anonymous
()

Временный объект, созданный arith_string(_str) и скопрованный в p->pole, автоматически уничтожается, поэтому вызывается деструктор :-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.