|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.10.2012, 18:00 | #1 |
Регистрация: 31.10.2012
Сообщений: 6
|
Про деструктор
Прочитал в книге (кое-что не понял):
"... если конструктор или деструктор не созданы явно, компилятор создаст их сам. Конструктор, созданный компилятором, будет стандартным, т.е. без аргументов. Но можно создать и собственный стандартный конструктор." - тут понятно, а вот дальше: "Чтобы придать классу законченность, при объявлении конструктора не забудьте объявить и деструктор, даже если ему нечего делать. Хотя и стандартный деструктор будет работать корректно, отнюдь не повредит объявить собственный. Это сделает программу более ясной." - вот что автор здесь подразумевает под надписью стандартный деструктор? Это конструктор ведь может быть обычным (т.е. с параметрами, не имеет специального названия) или стандартным (т.е. без параметров). А деструтор всегда один и тот же без параметров. Просто я могу либо свой деструктор написать, либо не делать этого и тогда деструктор будет создан компилятором. Может тогда в книге опечатка? И автору следовало бы написать вот так: "Чтобы придать классу законченность, при объявлении конструктора не забудьте объявить и деструктор, даже если ему нечего делать. Хотя и деструктор созданный компилятором будет работать корректно, отнюдь не повредит объявить собственный. Это сделает программу более ясной." - может так правильнее будет? Я просто реально не понимаю, то ли в книге опечатка, то ли я что-то путаю... |
31.10.2012, 18:07 | #2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Очевидно, автор имеет в виду деструктор, создаваемый компилятором. Он, конечно, будет работать корректно - в том смысле, что при его вызове программа рухнуть не должна, - но в случае, если класс управляет некоторым ресурсом (памятью, файловым дескриптором, etc.), использование деструктора по умолчанию будет приводить к утечке этого ресурса.
А что за книга? |
31.10.2012, 18:09 | #3 | |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
У вас в класе могут быть специфические поля, которые необходимо убивать руками.
Стандартный (странное какое-то название) ничего про них не знает, а ваш, если надо, знает и завалит их. Понятно? Цитата:
|
|
31.10.2012, 18:13 | #4 |
Регистрация: 31.10.2012
Сообщений: 6
|
|
31.10.2012, 18:15 | #5 |
Регистрация: 31.10.2012
Сообщений: 6
|
Ну, наверное, в последующих главах про это будет ещё написано. Я просто только начал про классы читать и меня этот абзац затормозил на пару дней...
|
31.10.2012, 18:32 | #6 | |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
Цитата:
|
|
31.10.2012, 18:52 | #7 | |
Регистрация: 31.10.2012
Сообщений: 6
|
Цитата:
Либерти читать посоветовал одногруппник, он сам по нему изучал. Мне так то нравится эта книжка. Всё понятно вроде.Так, есть опечатки, но немного и их сразу видно. Так я другие книги смотрел, там какую не возьми, везде пишут, что для профессионалов или для тех кто знает язык С (например, Шилдт - самоучительС++). А эта книга как раз для тех кто вообще ничего не знает. Я поэтому и читаю. Ещё один человек мне рекомендовал почитать "Айвор Хортон - Вижуал С++, полный курс". Но я просто Либерти уже читаю и бросать не хочу. Хотя, а вообще чтобы стать программистом на С++, вообще достаточно прочитать 1 книжку и всё в ней разобрать? Я как-то не думал об этом. Вот вы конкретно сколько прочитали книжек? И как называются? (если не секрет). P.S. Про странные термины: А как на самом деле должен называться стандартный конструктор (это который без параметров). |
|
31.10.2012, 20:18 | #8 |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
Есть только 3 расово верных автора, прочитав книги которых ты будешь все знать (если поймешь что написано, конечно) - Б.Керниган, Д.Ричи (разработали стандарт С), Бьёрн Страуструп (С++). В их книгах так сказать все в первоисточнике.
Помог? Оставляем отзыв =)
|
31.10.2012, 20:51 | #9 |
Регистрация: 31.10.2012
Сообщений: 6
|
А в Страуструпе есть про "управляемые расширения для С++" (или как это правильно называется...) ?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
с++ вопрос про деструктор | 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 |