"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1

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

29.01.2015, 15:51. Показов 5284. Ответов 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,875
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru