Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Хочу сделать универсальную процедуру, которая удаляет любой объект и присваивает ему значение NULL. Как делается обычно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вместо последних двух строк хочу иметь следующую функцию: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Всё отрабатывает без ошибок, но вот только деструктор класса не вызывается. Как исправить ? Я полагаю, что компилятор не понимает, что объект-указатель hObject относится к классу "A". Возможен ли вообще такой подход ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 12:17 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Может завести ещё 1 параметр и в функцию передавать тип объекта ? А потом при удалении через какой-нибудь cast приводить к этому типу и удалять ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 12:31 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
crush1Возможен ли вообще такой подход ? MyDeleteObject должна быть template. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 12:33 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
crush1, Передавай не LPVOID, а какой либо прародитель XMyObject*, и виртуальный деструктор тебя спасет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 12:57 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Еще можно сделать неправильно - макросом. Шаблоном не очень хорошо - сгенерится своя функция для каждого типа. Кроме того, нужно учитывать случай, когда у тебя массив объектов. http://www.cplusplus.com/reference/new/operator delete []/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 13:02 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 15:09 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
ЗимарглШаблоном не очень хорошо - сгенерится своя функция для каждого типа. И что тут плохого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 15:24 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyИ что тут плохого? раздувание кода, разве это хорошо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 15:26 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
FishHookAnatoly MoskovskyИ что тут плохого? раздувание кода, разве это хорошо?монописуально. особенно в данном случае. А вот от лишней писанины избавит, и от ненужных бессмысленных наследований тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 15:58 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
egorychмонописуально. особенно в данном случае. Особенно в данном? crush1Хочу сделать универсальную процедуру, которая удаляет любой объект В пессимистическом варианте вы получите вариант функции для всех классов использующихся в программе. Ну вперёд, чо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 16:08 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Если функция действительно нужна всем классам програмы, то ручное написание всех её вариантов, безусловно, круче шаблона ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 16:11 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
FishHookНу вперёд, чо!функция то пипец огромная, 3 строчки, раздует код неимоверно Куда лучше не забыть все эти классы отнаследовать от Deletable. И потом долго медитировать, задлянафига это сделано вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 16:52 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
egorychFishHookНу вперёд, чо!функция то пипец огромная, 3 строчки, раздует код неимоверно Куда лучше не забыть все эти классы отнаследовать от Deletable. И потом долго медитировать, задлянафига это сделано вообще. Наследование - основополагающий принцип ООП в С-подобных языках. Если задача решается без метапрограммирования, то её нужно решать без метапрограммирования. А если я забуду отнаследоваться от Deletable, то получу ошибку компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 17:24 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
FishHookраздувание кода, разве это хорошо? Вы вообще видели объемы бинарников С++? Там на мегабайты идет речь, а вы тут со своим раздутием на пару Кбайтов ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 19:03 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
crush1, только макросом\шаблоном со всеми вытекающими ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 19:11 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyраздутием на пару Кбайтов пару килобайтов там, пару килобайтов сям, а потом сами же гундите на форумах "что ж за программы то пошли! Элементарная тулзовина полгигабайта отжирает! Вот в наше время в 64к умудрялись приличную игру засунуть! Совсем школота обленилась!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 19:31 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЗимарглШаблоном не очень хорошо - сгенерится своя функция для каждого типа. И что тут плохого? Я не говорил, что плохо. Некрасиво. К тому же ТС хочет чего то странного типа FreeAndNil, так что правильности построения я не советчик =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 20:40 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
crush1хочу иметь следующую функцию: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Всё отрабатывает без ошибок, но вот только деструктор класса не вызывается. Как исправить ? Я полагаю, что компилятор не понимает, что объект-указатель hObject относится к классу "A". Возможен ли вообще такой подход ? Чтото мне подсказывает, что указатель a тут не изменится. Должна быть функция MyDeleteObject( T ** p_hObject){ .... *p_hObject = NULL; Не уверен, что будет работать грязный хак - приведение void ** p_hObject к произвольному классу, например к Deletable: delete (Deletable *)(*p_hObject); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 22:18 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
crush1Хочу сделать универсальную процедуру, которая удаляет любой объект и присваивает ему значение NULL. Как делается обычно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вместо последних двух строк хочу иметь следующую функцию: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Всё отрабатывает без ошибок, но вот только деструктор класса не вызывается. Как исправить ? Я полагаю, что компилятор не понимает, что объект-указатель hObject относится к классу "A". Возможен ли вообще такой подход ? да, все правильно. нет, такой подход невозможен, указатель должен быть типизированным. поэтому функция должна быть шаблонной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 22:50 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
crush1Может завести ещё 1 параметр и в функцию передавать тип объекта ? А потом при удалении через какой-нибудь cast приводить к этому типу и удалять ? тип нельзя передать как параметр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 22:50 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
ЗимарглЕще можно сделать неправильно - макросом. Шаблоном не очень хорошо - сгенерится своя функция для каждого типа. Кроме того, нужно учитывать случай, когда у тебя массив объектов. http://www.cplusplus.com/reference/new/operator delete[]/ ну и пусть генерируется, она тут же заинлайнится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 22:51 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
FishHookegorychмонописуально. особенно в данном случае. Особенно в данном? crush1Хочу сделать универсальную процедуру, которая удаляет любой объект В пессимистическом варианте вы получите вариант функции для всех классов использующихся в программе. Ну вперёд, чо! да и хрен с ним! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 22:53 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
такая функция, разумеется, должна принимать ссылку на указатель, чтобы иметь возможность его обнулять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2015, 22:57 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
MasterZivтакая функция, разумеется, должна принимать ссылку на указатель, чтобы иметь возможность его обнулять. В "советах" читал, что ссылки следует всегда делать константными. Это в духе C, где переменные передаваемые по значению не менялись. Синтаксически в C++ передача переменной по ссылке и по значению не отличаются. Константная ссылка в C++ может принять временный объект или литерал, что расширяет область применения функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 00:09 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabВ "советах" читал, что ссылки следует всегда делать константными. Либо это вредные советы, либо ты их неправильно читал. Константные ссылки используют вместо передачи по значению для того, чтобы не создавать временные объекты и тратить время на копи-конструктор. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 00:15 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
FishHookAnatoly MoskovskyИ что тут плохого? раздувание кода, разве это хорошо? Что у вас за пренебрежительное отношение к обобщённому программированию. Использование макрофункций в С++ вообще нежелательно. В данном конкретном случае как минимум отсутствует проверка типов входных и выходных параметров функции, что приводит к потенциальным проблемам. PS Если не ошибаюсь даже просто макроимена(не макрофункции) в С++ нежелательно использовать. Это связано, как минимум, с возможными проблемами при отладке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 01:44 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЧто у вас за пренебрежительное отношение к обобщённому программированию. Использование макрофункций в С++ вообще нежелательно. В данном конкретном случае как минимум отсутствует проверка типов входных и выходных параметров функции, что приводит к потенциальным проблемам. PS Если не ошибаюсь даже просто макроимена(не макрофункции) в С++ нежелательно использовать. Это связано, как минимум, с возможными проблемами при отладке с чего вдруг она будет отсутствовать в шаблоне? даже жёстче чем в FreeAndNil дельфийском будет проверка типов PPS: волков бояться, ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 07:08 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)SashaMercuryЧто у вас за пренебрежительное отношение к обобщённому программированию. Использование макрофункций в С++ вообще нежелательно. В данном конкретном случае как минимум отсутствует проверка типов входных и выходных параметров функции, что приводит к потенциальным проблемам. PS Если не ошибаюсь даже просто макроимена(не макрофункции) в С++ нежелательно использовать. Это связано, как минимум, с возможными проблемами при отладке с чего вдруг она будет отсутствовать в шаблоне? даже жёстче чем в FreeAndNil дельфийском будет проверка типов PPS: волков бояться, ... вы меня не так поняли. или я неправильно пояснил. эта фраза относится к макрофункции аналогичной шаблону ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 07:19 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
FishHookЕсли задача решается без метапрограммирования, то её нужно решать без метапрограммирования. ну, решите эту задачу для double * )) PS какая-то религия запрещает метапрограммирование? Очень интересно. Можно поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 09:36 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovmcureenabВ "советах" читал, что ссылки следует всегда делать константными. Либо это вредные советы, либо ты их неправильно читал. Константные ссылки используют вместо передачи по значению для того, чтобы не создавать временные объекты и тратить время на копи-конструктор. Ссылки без const можно использовать ровно с той же целью. Тут суть не в оптимизации (к стати, если функции нужен инициализированный временный объект, то почему бы его не создать передавая параметр по значению), а в том чтобы программу было легче читать. Для функций: Код: plaintext 1. 2. вызов выглядит одинаково: Код: plaintext 1. 2. Программист может ожидать, что и f1 и f2 не меняют y. Иного смысла в этом совете нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 11:02 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabТут суть не в оптимизации (к стати, если функции нужен инициализированный временный объект, то почему бы его не создать передавая параметр по значению), а в том чтобы программу было легче читать.мы вторую страницу обсуждаем мега-функцию, удаляющую свой входной параметр и присваивающий ему NULL. Можете пояснить, каким боком к этому обсуждению относятся константные ссылки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 12:00 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
egorychmcureenabТут суть не в оптимизации (к стати, если функции нужен инициализированный временный объект, то почему бы его не создать передавая параметр по значению), а в том чтобы программу было легче читать.мы вторую страницу обсуждаем мега-функцию, удаляющую свой входной параметр и присваивающий ему NULL. Можете пояснить, каким боком к этому обсуждению относятся константные ссылки? Тем боком, что тут нужна не ссылка на указатель, а указатель на указатель. Так будет легче читать программу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 13:06 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabТем боком, что тут нужна не ссылка на указатель, а указатель на указатель. Так будет легче читать программу. Да ну? С какого это перепугу FreeAndNil(&var) читается легче чем FreeAndNil(var)? Не говоря уже о возможности злоупотреблений типа FreeAndNil((void*)12345). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 13:36 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Автору использовать шаблон unique_ptr и т.п. Smart Pointers. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 13:49 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabТем боком, что тут нужна не ссылка на указатель, а указатель на указатель. Так будет легче читать программу.легче читать программу будет, если перестать называть функции f1, f2, а давать им осмысленные имена, как справедливо отметил Dimitry Sibiryakov. mcureenabАвтору использовать шаблон unique_ptr и т.п. Smart Pointers.нуууу так не честно! эта фраза была заготовлена на 4ю страницу обсуждения тут люди загоняются на шаблон инлайн-функции из 2х строк, а вы им предлагаете полноценный шаблонный класс использовать, этож как код-то распухнет то у них, жуть же просто ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 13:56 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
egorychmcureenabАвтору использовать шаблон unique_ptr и т.п. Smart Pointers.нуууу так не честно! эта фраза была заготовлена на 4ю страницу обсуждения Ой. Простите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 14:11 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabMasterZivтакая функция, разумеется, должна принимать ссылку на указатель, чтобы иметь возможность его обнулять. В "советах" читал, что ссылки следует всегда делать константными. Не в этом случае. Константные ссылки нужны когда объект по ссылке не меняется . В данном случае мы наоборот хотим его в функции менять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 14:32 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
egorychmcureenabТут суть не в оптимизации (к стати, если функции нужен инициализированный временный объект, то почему бы его не создать передавая параметр по значению), а в том чтобы программу было легче читать.мы вторую страницу обсуждаем мега-функцию, удаляющую свой входной параметр и присваивающий ему NULL. Можете пояснить, каким боком к этому обсуждению относятся константные ссылки? Таким же, как и макросы. Никаким. Искомая функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. (могу наврать со static_cast<void*>(0) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 14:37 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
MasterZivegorychпропущено... мы вторую страницу обсуждаем мега-функцию, удаляющую свой входной параметр и присваивающий ему NULL. Можете пояснить, каким боком к этому обсуждению относятся константные ссылки? Таким же, как и макросы. Никаким. Искомая функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. (могу наврать со static_cast<void*>(0) ) Да и nullptr тут тем же боком относится ))) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 15:32 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyДа и nullptr тут тем же боком относится ))) if - тоже лишний. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 15:34 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAnatoly MoskovskyДа и nullptr тут тем же боком относится ))) if - тоже лишний. По большому счету - да.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 15:51 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
MasterZivНе в этом случае. Константные ссылки нужны когда объект по ссылке не меняется . В данном случае мы наоборот хотим его в функции менять. Поэтому следует использовать указатель на указатель. Стандартный delete не меняет сам указатель. А твой Delete меняет. Не гоже, чтобы они одинаково выглядели. Код: plaintext 1. 2. Почему a обнулился? 8( Код: plaintext 1. 2. Тут все ясно. С самим a в Delete что то происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 16:01 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDimitry Sibiryakovпропущено... if - тоже лишний. По большому счету - да.)) По большому счёту и вся функция лишняя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 16:46 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabMasterZivНе в этом случае. Константные ссылки нужны когда объект по ссылке не меняется . В данном случае мы наоборот хотим его в функции менять. Поэтому следует использовать указатель на указатель. Стандартный delete не меняет сам указатель. А твой Delete меняет. Не гоже, чтобы они одинаково выглядели. Код: plaintext 1. 2. Почему a обнулился? 8( Код: plaintext 1. 2. Тут все ясно. С самим a в Delete что то происходит. Это уже давно никого не интересующие бредни, по-моему. Абсолютная дурость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 16:47 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabСтандартный delete не меняет сам указатель. А твой Delete меняет. Не гоже, чтобы они одинаково выглядели.ну назови её не Delete, а clean, erase, destroy или как там ещё, хоть destroy_and_null(). Советы они такие советы. Особенно когда они начинаются со слов "никогда" )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 18:25 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
MasterZivАбсолютная дурость. она в изначальной постановке задачи - "Хочу сделать универсальную процедуру" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2015, 21:21 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Изопропил, умников полно, ты бы человеку помог мало ли как и что он назвал - процедура, макрос - понятно же что хочет Код: plaintext 1. в дельфи правда ссылка сначала зануляется, а потом удаляется объект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 07:43 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Изопропил, умников полно, ты бы человеку помог я и пытаюсь помочь - предлагаю дурью не маяться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 07:51 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
Изопропилkealon(Ruslan)Изопропил, умников полно, ты бы человеку помог я и пытаюсь помочь - предлагаю дурью не маяться для тебя может дурь, для кого-то нужная вещь с гарантией нормальной работы и уж куда удобнее чем лапша if-ов в деструкторе в популярных книгах по С++ PS: я вот в питоне делал объект который вызывает исключение при любых операциях с ним, кроме присвоения. никому кроме меня такого не требовалось, а я дня два убил на чуть больше 200 строчек кода пока сделал, ладно подмогли иначе ещё бы неизвестно сколько делал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 08:37 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)для тебя может дурь, для кого-то нужная вещь с гарантией нормальной работы Никакой гарантии тут нет. Один указатель занулил, десять копий остались. Попытки удалить не динамический объект так же не исключены. Было бы так все шоколадно, со всякими умными указателями не заморачивались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 10:03 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabkealon(Ruslan)для тебя может дурь, для кого-то нужная вещь с гарантией нормальной работы Никакой гарантии тут нет. Один указатель занулил, десять копий остались. Попытки удалить не динамический объект так же не исключены. Было бы так все шоколадно, со всякими умными указателями не заморачивались. человеку нужна простая вещь: создать объекты в конструкторе, удалить в деструкторе - один объект - один указатель FreeAndNil - больше ни для чего не предназначен другое дело, что в C++ при возникновении исключения в конструкторе не будет вызван деструктор как в дельфи в конструкторе надо извращаться с отловом исключений что бы TObject повторить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 10:37 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)человеку нужна простая вещь: создать объекты в конструкторе, удалить в деструкторе - один объект - один указатель FreeAndNil - больше ни для чего не предназначен А смысл занулять указатели, когда весь объект уничтожается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 10:46 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabА смысл занулять указатели, когда весь объект уничтожается? обычно для отлова ошибок в логике используется, при вызове деструктора может куча кода вызываться в котором используется текущий объект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 11:16 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabkealon(Ruslan)человеку нужна простая вещь: создать объекты в конструкторе, удалить в деструкторе - один объект - один указатель FreeAndNil - больше ни для чего не предназначен А смысл занулять указатели, когда весь объект уничтожается? Ну да, но -- привычка, как-то спокойнее. В отледке, на самом деле, сильно помогает иногда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 13:12 |
|
||
|
Процедура удаления любого объекта
|
|||
|---|---|---|---|
|
#18+
mcureenabkealon(Ruslan)человеку нужна простая вещь: создать объекты в конструкторе, удалить в деструкторе - один объект - один указатель FreeAndNil - больше ни для чего не предназначен А смысл занулять указатели, когда весь объект уничтожается? Чтобы знать, что они не содержат адрес уже уничтоженного объекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2015, 16:29 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018749]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 278ms |

| 0 / 0 |
