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

Stashevckiy

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

grigsoft

Well-known member
15.11.2005
735
0
#2
В первом кострукторе mass обнуляется, или остается неинициализированным? В последнем случае будет тебе вылет при удалении указателя в никуда.
 

lazybiz

Well-known member
03.11.2010
1 339
0
#4
Деструктор всегда один.
Тебе нужно в каждом конструкторе инициализировать указатель на массив нулём, т.е, к примеру: p = NULL;.
А в деструкторе у тебя получается так: if ( p ) delete [] p;
 

Stashevckiy

Well-known member
23.10.2011
56
0
#5
В первом не инициализирован остается. Попробую сделать, как Вы сказали.
 

lazybiz

Well-known member
03.11.2010
1 339
0
#6
Там пробовать не надо. Там просто надо сделать так, как я сказал. Это решит проблемы с выделением памяти.