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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Stashevckiy, 23 окт 2011.

  1. Stashevckiy

    Stashevckiy Well-Known Member

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

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    В первом кострукторе mass обнуляется, или остается неинициализированным? В последнем случае будет тебе вылет при удалении указателя в никуда.
     
  3. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    да. Больше вопросов не нашел
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

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

    Stashevckiy Well-Known Member

    Регистрация:
    23 окт 2011
    Сообщения:
    56
    Симпатии:
    0
    В первом не инициализирован остается. Попробую сделать, как Вы сказали.
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Там пробовать не надо. Там просто надо сделать так, как я сказал. Это решит проблемы с выделением памяти.
     
  7. Stashevckiy

    Stashevckiy Well-Known Member

    Регистрация:
    23 окт 2011
    Сообщения:
    56
    Симпатии:
    0
    Да, все получилось, спасибо за консультацию всем)
     
Загрузка...

Поделиться этой страницей