Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Конструктор и деструктор


Автор: Новичек89 29.6.2009, 00:10
Здравствуйте, помогите пожалуйста!!! Мне нужна помощь, и посоветовались обратится к Вам! 
Вообщем такая ситуация...
Наш преподаватель по "технологии программирования (СИ++)" требует уже 2й год от студентов ответ, на вопрос "Чем отличается Конструктор от Деструктора?" Ну и при этом нужно назвать их свойства. Мы знаем, и говорим ему : 1) В классе может быть не один конструктор, а деструктор только один. ; 2) Конструктор может иметь аргументы, а деструктор нет; 3) Деструктор не имеет параметров, а конструктору они могут передаваться; 4) Конструктор не может быть виртуальным, а диструктор виртуальный; 5) Они оба называются так же как и класс; 6) Конструктор может быть перегружен, деструктор - нет; 6)Конструктор не возвращает значение, не может быть объявлен, как const,volatile,static; не наследуется, может быть явно/не явно вызван; может быть конструктор копирования; 7) Конструктор выполняется при инициализации объекта, деструктор - после работы программы. 8) Оба могут быть по умолчанию; 9) Для конструктора не используется тип void 
Преподаватель говорит, что вы все не называете еще одного отличия. И вот он от нас требует этого отличия, "хоть ты тресни..." =((( Смотрели книги, искали в инете - без рез-та... Помогите, подскажите пожалуйста!!! Этот ответ поможет поскорее сдать этот экзамен... 
Очень надеюсь на помощь знающих людей !!!
Конечно дело не в тильде. ... 
Спасибо заранее!!!

Автор: hsilgos 29.6.2009, 00:33
Цитата

не наследуется, может быть явно/не явно вызван;

деструктор тоже явно можно вызвать

Автор: kemiisto 29.6.2009, 00:36
Новичек89, списочек, конечно, бредовый. Как, впрочем, и вопрос. 5 "отличие" убило. Ну... даже не знаю... Скажите, что-нить типа, конструктор выделяет память под объект, деструктор - освобождает. smile 

Автор: hsilgos 29.6.2009, 00:36
Есть еще как бэ не отличие, а, скорее, общее правило: из конструктора можно кидать исключение - из деструктора строго не реккомендуется (хотя тоже можно)

Добавлено через 2 минуты и 23 секунды
Цитата

Скажите, что-нить типа, конструктор выделяет память под объект, деструктор - освобождает.

Этим занимается не конструктор/деструктор. Скорее конструктор - конструирует объект, инициализирует. Деструктор - освобождает ресурсы

Автор: EvilsInterrupt 29.6.2009, 00:39
Ну и в чем сложность ? Правильно требует!

Конструктор это создатель
Деструктор это разрушитель

Т.е. самое главное что один СОЗДАЕТ, а другой РАЗРУШАЕТ. 

А все остальное,это уже технические детали. Они существенны, но для понимания сути важно именно это отличие!

Грамотный у вас препод, побольше таких бы! ;) Незачем по верхушкам скакать, надо в корне знать что и как. Зная суть вещей, можно мыслить более широко и следовательно писать более правильный код и знать где примерно искать баги, если таковы видешь. 

Автор: kemiisto 29.6.2009, 00:44
Цитата(hsilgos @  28.6.2009,  22:36 Найти цитируемый пост)
Этим занимается не конструктор/деструктор. Скорее конструктор - конструирует объект, инициализирует. Деструктор - освобождает ресурсы 

hsilgos, ой, я Вас умоляю. Давайте не будем тут терминологическую демагогия разводить. Я ещё раз повторяю, дан список такого шедеврального бреда, что можно добавить всё что душе угодно! smile 

Цитата(Новичек89 @  28.6.2009,  22:10 Найти цитируемый пост)
5) Они оба называются так же как и класс;

Никак не отойду! smile Классное "отличие".

Цитата(EvilsInterrupt @  28.6.2009,  22:39 Найти цитируемый пост)
Конструктор это создатель
Деструктор это разрушитель

 smile Во! То что надо!

Автор: bsa 29.6.2009, 00:46
2 и 3 - одно и тоже. Только другими словами и в другой последовательности
4. Деструктор может быть виртуальным.
5. не совсем, у деструктора перед названием идет тильда.
6. Это скорее тоже самое, что и 2, и 3
7. Деструктор выполняется при уничтожении экземпляра класса, а конструктор - при создании.
8. "деструктор по умолчанию"? Это что-то новенькое. Потому что "конструктор по умолчанию" - это конструктор, который можно вызвать без указания параметров.
9. В случае наследования конструкторы вызываются от базового к наследнику, а деструкторы от наследника к базовому.

Автор: UnrealMan 29.6.2009, 00:55
Цитата(Новичек89 @  29.6.2009,  00:10 Найти цитируемый пост)
Преподаватель говорит, что вы все не называете еще одного отличия.

Возможно, он хочет услышать, что у деструктора не может быть списка инициализации smile 

Автор: hsilgos 29.6.2009, 00:56
Цитата

hsilgos, ой, я Вас умоляю. Давайте не будем тут терминологическую демагогия разводить.

Не пытался, просто решил, что Вы об этом не знаете   smile 

Список бредовый, а препод явно хочет услышать про создание/уничтожение, согласен...

Автор: Новичек89 29.6.2009, 01:02
Спасибо, за поправки - учтется! ;) 
Цитата

Конструктор это создатель
Деструктор это разрушитель



Ну это говорилось ему при определении этих двух функций!

Цитата

Никак не отойду!  Классное "отличие".


Я написала, что  при их отличиях, мы должны назвать их свойства и характеристики. 


Цитата

Есть еще как бэ не отличие, а, скорее, общее правило: из конструктора можно кидать исключение - из деструктора строго не рекомендуется (хотя тоже можно)

Объясните, пожалуйста, что в данном случаи "Исключение" - ? И "Кидать исключение" - ???

По сути,  никто так, ничего нового и не назвал... Вопрос остается - Что нужно этому Преподавателю ??? !!!

Автор: Dmi3ev 29.6.2009, 01:16
Цитата

Что нужно этому Преподавателю ??? !!! 

Похоже он сам не знает, раз второй год от вас это хочет  smile Если бы знал, сам бы вам рассказал  smile 
Цитата

По сути,  никто так, ничего нового и не назвал...

Ну к твоим отличиям хз че прибавить  smile Если только, что перед именем деструктора есть фигнюшечка, а перед именем конструктора нет...  smile  

Автор: EvilsInterrupt 29.6.2009, 01:49
>>Похоже он сам не знает, раз второй год от вас это хочет   Если бы знал, сам бы вам рассказал  
У меня в КГТУ им. Туполева Суздальцев был, это препод еще тот. За "однерку" вместо "еденицы" дальше уже не слушал и чел отправлялся учить дальше.
Меж прочем, правильно делал, если каждому позволить на преведовском езыге говорить, то это уже хз че получится. 

Мы технари, а у нас терминология должна быть одна и таже. Говоря о конструкторе, мы должны четко понимать о чем идет речь. Что это не простая ф-ция которая может быть перегружена, и что это не просто ф-ция создающая объект класса а-ля CreateMyObjct(my_objct * obj); , а совершенное четкое понятие:
"Конструктор это спец.ф-ция класса входящая в его состав и служащая для создания объекта этого класса". Все, после этих слов, у человека если и появятся вопросы, то вполне конкретные и по существу!

Автор: Новичек89 29.6.2009, 01:55
Цитата

Если только, что перед именем деструктора есть фигнюшечка, а перед именем конструктора нет...    

Это " фигнюшечка " называется ТИЛЬДА. И о ней, я тоже писала...
 
Мы вот тоже думаем уже, что мол, мож над нами стебется ??? ... Хотя я уже битый час читаю инет по этой тме...Что то новенькое для себя нахожу, остается в этом разобраться, хотя бы на уровне ответа...  
Благо прогить возле него он не требует...Ведь это процесс творческий - и под напором и взглядом "надзиратель" неосуществим =((( 

Мне кое где, ради смеха (Я так полагаю) сказали, ответить ему, что отличие в их Названии...  smile  
Завтра, так и отвечу...Если он так и будет говорить "Правда, но не То", "Я Вас понял, но Вы не правы", "Студент, это не то что я жду" ... и т.д. (((

Добавлено через 4 минуты и 47 секунд
Цитата

 За "однерку" вместо "еденицы" дальше уже не слушал и чел отправлялся учить дальше

КОШМАР!!! 
Благо у нас не так... Но тоже еще тот фрукт!!!  smile  Не экзамен, а лотерея... Кто учил, и все понимают - не все сдали...А Кто даже шпоры не читал - те,почти сдали...  Ни какой статистики...  smile  5ки нет ни одной!!! Поверьте, есть не 1н человек, который идет на красный... 
Вообщем просто ... аут. когда я с 1го раза не сдала, поняла что единственный способ получить это "удв" - найти ответ на этот вопрос. Так, как он сказал - "Кто ответит, это конечно не зачет, и не + пол бал (!ДАЖЕ!), Я буду относится к этому студенту по-другому" ... А как "по-другому" - это загадка...  smile 

И все таки верю,что кто-нить напишет что-нить ДЕЛЬНОЕ!!!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)