Перегрузка Конструкторов

  • Автор темы Stashevckiy
  • Дата начала
S

Stashevckiy

Здравствуйте! Подскажите, пожалуйста, кто-нибудь, если в программе имеется перегрузка конструктора, то независимо от количества последних, используется один деструктор для удаления объекта? У меня один конструктор принимает 3 переменных типа int, а второй помимо того, что принимает, еще и динамически выделяет память под чаровский массив. И вот когда я в деструкторе удаляю командой delete [] mass этот массив, это призводит до крита в программе. Без этой строчки все норм. Но, как бы, по правилам, выделенную память нужно же освободить. Так что, как то вот так. Жду ответов. Спасибо! :lol:
 
G

grigsoft

В первом кострукторе mass обнуляется, или остается неинициализированным? В последнем случае будет тебе вылет при удалении указателя в никуда.
 
L

lazybiz

Деструктор всегда один.
Тебе нужно в каждом конструкторе инициализировать указатель на массив нулём, т.е, к примеру: p = NULL;.
А в деструкторе у тебя получается так: if ( p ) delete [] p;
 
S

Stashevckiy

В первом не инициализирован остается. Попробую сделать, как Вы сказали.
 
L

lazybiz

Там пробовать не надо. Там просто надо сделать так, как я сказал. Это решит проблемы с выделением памяти.
 
S

Stashevckiy

Да, все получилось, спасибо за консультацию всем)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!