Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1

В каких структурах нужно прописать деструкторы?

29.01.2015, 15:51. Показов 5230. Ответов 41
Метки нет (Все метки)

Здравствуйте. Вопрос в каких структурах нужно прописать деструкторы. Спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct A
{
    A* a;
    virtual void f() = 0;
};
struct B : A
{
    int a;
    virtual void f() { }
};
 
struct Test
{
    A* a;
    void f() { }
};
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2015, 15:51
Ответы с готовыми решениями:

В каких случаях нужно создавать динамические переменные, а в каких статические?
такой же вопрос и по массивам ! Объясните пожалуйста !

Нужно ли вызывать деструкторы для объектов помувленного массива?
Собственно, сабж. Будет ли правильным вызывать деструкторы элементов массива, которые были перемещены, или это бесполезная трата...

нужно прописать программу!
задачка Pascal, нужно прописать программу! Дано c, d, x. Вычислить функцию Z=sin(c)+X2• (c3- ed•x).Если Z≥ 0 вычислить и вывести...

41
29.01.2015, 21:58

Не по теме:

холливар :popcorn:

0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
29.01.2015, 22:27
Цитата Сообщение от hoggy Посмотреть сообщение
Читали, проходили мы всех этих Майерсов-Саттеров-Элайджев-Макконелов и прочих всех остальных.
Они конечно молодцы.
Вот только их читатель - это начальный/средний уровень ребят, которые ещё не освоили нюансы.
Путь лучше они следуют советам авторитетов, и пореже стреляют себе в голову, пока не освоились.
Но однажды новобранец станет специалистом, и начнет понимать нюансы.
Ну так назовите более компетентных авторов, понимающих нюансы. Или это вы и есть? Тогда уж на свои книги ссылочки дайте, чего уж скромничать.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
29.01.2015, 22:40
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну так назовите более компетентных авторов, понимающих нюансы. Или это вы и есть? Тогда уж на свои книги ссылочки дайте, чего уж скромничать.
Чем вас Маейрс, как автор не устроил?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
29.01.2015, 22:42
Цитата Сообщение от hoggy Посмотреть сообщение
Чем вас Маейрс, как автор не устроил?
Ну, вы ж написали, что он нюансов не понимает.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
29.01.2015, 22:49
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, вы ж написали, что он нюансов не понимает.
Вам стоит быть внимательнее к собеседнику.
Я этого не писал.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
29.01.2015, 23:08
Цитата Сообщение от hoggy Посмотреть сообщение
Я этого не писал.
Ну, ответом на это сообщение является мое №22, и круг замкнулся. Просто мне кажется, что если кто-то приводит информацию, почерпнутую не из книг, а из своей бурной фантазии, ну, или если шибко перерос мировых авторитетов в понимании нюансов, то надо сразу честно об этом сообщать, чтобы не вводить людей в заблуждение.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
29.01.2015, 23:32
Цитата Сообщение от Mr.X Посмотреть сообщение
Ну, ответом на это сообщение является мое №22, и круг замкнулся.
Ничего не понял. На какое "это" ?

Цитата Сообщение от Mr.X Посмотреть сообщение
Просто мне кажется, что если кто-то приводит информацию, почерпнутую не из книг, а из своей бурной фантазии
То есть подробные описания моментов,
с ссылкой на сторонних изготовителей,
с выдержками кода,
с ссылками на онлайн-компиляторы с демонстрацией техники в реальном действии,
с примером использования технологии в стандартных механизмах,
и отсылкой к устройству этих механизмов - это значит по вашему "бурная фантазия" ?

Только потому, что из реальной практики, а не из книжки для новобранцев?

Цитата Сообщение от Mr.X Посмотреть сообщение
или если шибко перерос мировых авторитетов в понимании нюансов,
У вас самого какие то странные фантазии.
Я с Майерсом пиписькой не мерялся.
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
30.01.2015, 01:07
Понятно. Ну, так-то не вредно и книжки иногда читать. Майерс, например, сформулировал следующее правило: класс должен иметь виртуальный деструктор тогда и только тогда, когда содержит хотя бы одну виртуальную функцию.
а если нет виртуальных функций, а кто-то потом от него отнаследовался хрен знает для чего. попытка удалить через базу - потенциальная утечка. на сколько я помню - какой-то из этих товарищей рекомендовал делать виртуальными все публичные деструкторы вне зависимости от наличия виртуальных функций, либо делать их protected. Но бывает заранее известно что это оверхед и так не делают намеренно. Пример тому - стандартные контейнеры.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.01.2015, 02:12
Цитата Сообщение от DU2 Посмотреть сообщение
какой-то из этих товарищей рекомендовал делать виртуальными все публичные деструкторы вне зависимости от наличия виртуальных функций, либо делать их protected.
Про виртуальные диструкторы во все поля - это да, что-то такое я припоминаю.

Нормальная практика.
Автор объяснял это так: превентивная техника защиты,
которая позволяет раз и навсегда забыть о целом классе возможных ошибок в бизнес-приложении.

Использование превентивной защиты от ошибок призвано в итоге сэкономить время,
деньги, и нервы за счет сокращения издержек на отладку возможных багов.
---------------------------------------------------------------------------------

Такой подход не годится, когда нужно один раз построить эффективный инструмент,
тщательно его проверить.

А потом много-много раз использовать в самых разных проектах,
в том числе критичных к быстродействию и экономичности.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
30.01.2015, 08:17  [ТС]
Столько ненужного базара не по теме а конкретных ответов на вопросы создателя темы нет. Вы тут только и делаете что меритесь сами знаете чем.
 Комментарий модератора 
Вы просто сами не хотите вникать в суть того, что вам пишут. А об моральном содержании бесед позвольте следить администрации форума.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,874
30.01.2015, 08:57
Цитата Сообщение от hoggy Посмотреть сообщение
Про виртуальные диструкторы во все поля - это да, что-то такое я припоминаю.
Нормальная практика.
"Сдуру можно и хребёт сломать"
как только появляется хоть одна виртуальная функция, в частности деструктор, тут же
появляется и таблица виртуальных функций, а в объекте ссылка на неё.
конструктор копирования лучше переопределить, да и размер объекта увеличивается
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
30.01.2015, 09:45  [ТС]
Цитата Сообщение от _stanislav Посмотреть сообщение
Вы просто сами не хотите вникать в суть того, что вам пишут. А об моральном содержании бесед позвольте следить администрации форума.
Почему не хочу, очень даже хочу. Просто и ясно, если где то вызывался оператор new, значит где то должен вызваться оператор delete.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.01.2015, 09:57
Цитата Сообщение от _stanislav Посмотреть сообщение
Если у меня есть класс с чисто виртуальными методами и указателями, нужно ли для него писать деструктор.
Цитата Сообщение от Mr.X Посмотреть сообщение
Странный вопрос, конечно нужно. Виртуальные функции предполагают полиморфное использование, при котором виртуальный деструктор обязателен. Ну и если есть указатели, требующие освобождения памяти вручную, то тоже обязателен деструктор.
Цитата Сообщение от Mr.X Посмотреть сообщение
Майерс, например, сформулировал следующее правило: класс должен иметь виртуальный деструктор тогда и только тогда, когда содержит хотя бы одну виртуальную функцию.
Цитата Сообщение от _stanislav Посмотреть сообщение
Столько ненужного базара не по теме а конкретных ответов на вопросы создателя темы нет. Вы тут только и делаете что меритесь сами знаете чем.
Автор, что за смысл задавать вопрос на форуме, если вы не в состоянии прочитать и сопоставить ответы?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
30.01.2015, 10:20  [ТС]
Цитата Сообщение от Mr.X Посмотреть сообщение
Автор, что за смысл задавать вопрос на форуме, если вы не в состоянии прочитать и сопоставить ответы?
Вы можете мне дать конкретный пример на ассемблере, почему надо писать в абстрактом классе виртуальный деструктор и для чего нужно писать. Буду благодарен.

Добавлено через 11 минут
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.01.2015, 10:57
Цитата Сообщение от _stanislav Посмотреть сообщение
Вы можете мне дать конкретный пример на ассемблере, почему надо писать в абстрактом классе виртуальный деструктор и для чего нужно писать. Буду благодарен.
Мне кажется, у вас не совсем верное представление о том откуда берутся правила программирования. Логические доказательства тут не всегда годятся, потому что, как справедливо заметил тут один товарищ, всегда и везде возможно все что угодно.
Тут можно провести некоторую параллель с религией. Исаак Сирин писал, что святость человека определяется силой его жития. Т.е. рулят авторитеты, проверенные временем на опыте. То же самое и в программировании. Существуют мировые авторитеты, мнения которых и стоит придерживаться.
Я вот всегда думал, что если человек пишет что-то на форуме без указания, что это он сам выдумал, то это он из книжки цитирует. Оказывается нет. Многие излагают свои фантазии под видом достоверной информации, чем засир@ют информационное пространство.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
30.01.2015, 11:11  [ТС]
Я понимаю что правила игры задают инженеры ЦП, а языки это лишь правила управления им(ЦП). Причем довольно абстрактные.

Добавлено через 5 минут
Я тут собрался написать fsm используя таблицу полиморфных связей, из за непонимания механизма немного притормазнулся
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2226 / 1428 / 420
Регистрация: 16.05.2013
Сообщений: 3,651
Записей в блоге: 6
30.01.2015, 11:14
Цитата Сообщение от _stanislav Посмотреть сообщение
Я понимаю что правила игры...
Не понимаете. Язык С++ поддерживает ряд платформ с совершенно различной архитектурой. Важно понять, то что пишется на С++ и то во что компилируется код это совершенно разные вещи. Начать можно с того, что с++ платформонезависимый язык, а ассемблер напротив под каждую платформу свой.
Даже если сейчас будет полностью пересмотрена архитектура ЦП то на язык это по сути никак не повлияет.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
30.01.2015, 11:25  [ТС]
Цитата Сообщение от Ilot Посмотреть сообщение
Язык С++ поддерживает ряд платформ с совершенно различной архитектурой.
Кстати в этом и выражается абстрактность языка. Ваш пост в том что я не понимаю кажется не уместным. Потому что вы пишите все то что я не оспаривал.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
30.01.2015, 11:29
Цитата Сообщение от _stanislav Посмотреть сообщение
Я понимаю что правила игры задают инженеры ЦП, а языки это лишь правила управления им(ЦП). Причем довольно абстрактные.
Ну так в абстракциях и вся соль. В какой-то книжке прочитал такое мнение: какая разница на каком языке написана программа, все равно все это транслируется в машинные коды.
На самом деле язык определяет мышление, и чем выше уровень абстракций языка, тем мышление эффективнее. Человек, оперирующий более примитивным языком, просто не имеет того мышления, а следовательно инструмента, чтобы додуматься до того, что и владеющий языком сложным.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
30.01.2015, 11:37  [ТС]
Это верно, человеку трудно думать как машина я согласен. Кто то когда то сказал "Проблема не в том что машины научатся думать как люди, а в том что люди начнут думать как машины"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2015, 11:37

Что нужно прописать в mod_rewrite?
Чтобы преобразовать index.php?action=show_guests_data В, например: /action/show_guests_data или просто /show_guests_data

Куда нужно прописать команду?
Дело в том что задали создать клавишу, по щелчку которой будет рисоваться шестиугольник, радиус которого воспринимается по нажатию и...

Нужно прописать файл в Regedit
Ситуация у мена такая: У меня есть файл который нужно прописать в Regedit. И мне нужно написать программу, которая это бы делала. Только на...

Нужно просто 3 спецификатора прописать
нужно чуть переделать программу, тоисть задействовать 3 спецификатора (типа void Enter, void Summ, void Exit) помогите товарищи... ...

Нужно в цикле прописать 10 элементов HyperLink
Всем привет. Нужно в цикле прописать 10 элементов HyperLink for (int i=0; i<10; i++) HyperLink i.Text="..." Возникла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru