Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2012, 18:00   #1
4eloveki
 
Регистрация: 31.10.2012
Сообщений: 6
По умолчанию Про деструктор

Прочитал в книге (кое-что не понял):

"... если конструктор или деструктор не созданы явно, компилятор создаст их сам. Конструктор, созданный компилятором, будет стандартным, т.е. без аргументов. Но можно создать и собственный стандартный конструктор." - тут понятно, а вот дальше:

"Чтобы придать классу законченность, при объявлении конструктора не забудьте объявить и деструктор, даже если ему нечего делать. Хотя и стандартный деструктор будет работать корректно, отнюдь не повредит объявить собственный. Это сделает программу более ясной." - вот что автор здесь подразумевает под надписью стандартный деструктор? Это конструктор ведь может быть обычным (т.е. с параметрами, не имеет специального названия) или стандартным (т.е. без параметров). А деструтор всегда один и тот же без параметров. Просто я могу либо свой деструктор написать, либо не делать этого и тогда деструктор будет создан компилятором. Может тогда в книге опечатка? И автору следовало бы написать вот так:

"Чтобы придать классу законченность, при объявлении конструктора не забудьте объявить и деструктор, даже если ему нечего делать. Хотя и деструктор созданный компилятором будет работать корректно, отнюдь не повредит объявить собственный. Это сделает программу более ясной." - может так правильнее будет?

Я просто реально не понимаю, то ли в книге опечатка, то ли я что-то путаю...
4eloveki вне форума Ответить с цитированием
Старый 31.10.2012, 18:07   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Очевидно, автор имеет в виду деструктор, создаваемый компилятором. Он, конечно, будет работать корректно - в том смысле, что при его вызове программа рухнуть не должна, - но в случае, если класс управляет некоторым ресурсом (памятью, файловым дескриптором, etc.), использование деструктора по умолчанию будет приводить к утечке этого ресурса.

А что за книга?
Abstraction вне форума Ответить с цитированием
Старый 31.10.2012, 18:09   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

У вас в класе могут быть специфические поля, которые необходимо убивать руками.
Стандартный (странное какое-то название) ничего про них не знает, а ваш, если надо, знает и завалит их.
Понятно?

Цитата:
А что за книга?
тоже интересно
eval вне форума Ответить с цитированием
Старый 31.10.2012, 18:13   #4
4eloveki
 
Регистрация: 31.10.2012
Сообщений: 6
По умолчанию

Понял, спасибо.
Цитата:
Сообщение от Abstraction Посмотреть сообщение
А что за книга?
Либерти - С++, освой самостоятельно.
4eloveki вне форума Ответить с цитированием
Старый 31.10.2012, 18:15   #5
4eloveki
 
Регистрация: 31.10.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
У вас в класе могут быть специфические поля, которые необходимо убивать руками.
Стандартный (странное какое-то название) ничего про них не знает, а ваш, если надо, знает и завалит их.
Понятно?

тоже интересно
Ну, наверное, в последующих главах про это будет ещё написано. Я просто только начал про классы читать и меня этот абзац затормозил на пару дней...
4eloveki вне форума Ответить с цитированием
Старый 31.10.2012, 18:32   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Либерти - С++, освой самостоятельно.
по отзывам, пишут что перевод ключница делала, а то я думаю какие-то термины не от мира сего.
eval вне форума Ответить с цитированием
Старый 31.10.2012, 18:52   #7
4eloveki
 
Регистрация: 31.10.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
по отзывам, пишут что перевод ключница делала, а то я думаю какие-то термины не от мира сего.
В смысле это плохая книга что ли? Я поначалу когда захотел изучать С++, то пошёл в магазин и взял самую тоненькую книжку где-то страниц 350 (думал по-быстрее изучу ) ). Назвается "Динман - С++, освой на примерах". Такое дерьмо вообще. Там куча опечаток и ошибок. И очень коротко всё и непонятно. Мне там чуть ли не с каждым примером приходилось обращаться к специалистам.

Либерти читать посоветовал одногруппник, он сам по нему изучал. Мне так то нравится эта книжка. Всё понятно вроде.Так, есть опечатки, но немного и их сразу видно.

Так я другие книги смотрел, там какую не возьми, везде пишут, что для профессионалов или для тех кто знает язык С (например, Шилдт - самоучительС++). А эта книга как раз для тех кто вообще ничего не знает. Я поэтому и читаю.

Ещё один человек мне рекомендовал почитать "Айвор Хортон - Вижуал С++, полный курс". Но я просто Либерти уже читаю и бросать не хочу.

Хотя, а вообще чтобы стать программистом на С++, вообще достаточно прочитать 1 книжку и всё в ней разобрать? Я как-то не думал об этом. Вот вы конкретно сколько прочитали книжек? И как называются? (если не секрет).

P.S. Про странные термины: А как на самом деле должен называться стандартный конструктор (это который без параметров).
4eloveki вне форума Ответить с цитированием
Старый 31.10.2012, 20:18   #8
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Есть только 3 расово верных автора, прочитав книги которых ты будешь все знать (если поймешь что написано, конечно) - Б.Керниган, Д.Ричи (разработали стандарт С), Бьёрн Страуструп (С++). В их книгах так сказать все в первоисточнике.
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 31.10.2012, 20:51   #9
4eloveki
 
Регистрация: 31.10.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Helloween Посмотреть сообщение
Есть только 3 расово верных автора, прочитав книги которых ты будешь все знать (если поймешь что написано, конечно) - Б.Керниган, Д.Ричи (разработали стандарт С), Бьёрн Страуструп (С++). В их книгах так сказать все в первоисточнике.
А в Страуструпе есть про "управляемые расширения для С++" (или как это правильно называется...) ?
4eloveki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++ вопрос про деструктор world12_tk Помощь студентам 1 13.11.2011 23:45
Деструктор Niksan Общие вопросы C/C++ 8 08.04.2011 12:28
Конструкторы и деструктор С++ DarkSwan Помощь студентам 2 07.01.2011 12:13
Деструктор класса Lotles Общие вопросы C/C++ 2 16.10.2010 23:10
С++ (конструктор, деструктор) Kventin Помощь студентам 4 31.03.2009 18:11