Форум: "Прочее";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизЯзык, который всем нравится... Найти похожие ветки
← →
Celades (2006-10-24 17:19) [40]
> у сишных деструторов два существенных недостатка: не вызываются
> гарантированно и нет стандартного общего для всех виртуального
> деструктора
Это их достоинство. Если мне не ужно такое поведение я ливо сом котролирую время жизни объекта(new/delete), либо делаю метод Free(по аналогии с Delphi) и вызываю его сам у стековых объектов.
← →
guav © (2006-10-24 17:29) [41]> [39] Bless © (24.10.06 17:16)
Они предлагают ресурс в класс запуздырить.
Причём, т.к. при исключении в конструкторе деструкторы не будут вызваны - не более одного диамического ресурса на класс, потом уже такие классы использовать статически. И в стандартной библиотеке существуют стандартные шаблонные классы для разных ресурсов, таких как указатель на память, диамичесий массив... На этом месте я и "ниасилил" дальнейшее изучение С++
Вот кстати ещё пример - хороший язык должен буть таким чтобы необходимых для изучения и использования языка стандартных библиотек был мимимум.
> [40] Celades (24.10.06 17:19)
Ты про первоее или про второе. Если про первое, то с помощью Free ты не выкрутишься.
> сом котролирую время жизни объекта(new/delete),
А т.к без finally, то эти new/detete нужно поместить в класс, причём не более одного объекта на класс, иначе при исключениях delete вызываться не будет.
← →
euru © (2006-10-24 17:35) [42]
> kaif © (24.10.06 16:47) [33]
> with MyQuery alias m do
Необязательно вводить новое ключевое слово. В Delphi уже есть подходящее: as называется.
> Anatoly Podgoretsky © (24.10.06 17:00) [36]
Локальная переменная и алиас - всё-таки разные понятия.
← →
Celades (2006-10-24 17:36) [43]
> поместить в класс,
Да. smart_ptr и smart_array - сразными политиками владения, аллокации и освобождения памяти. Таким образом могу даже реализовать сборщик мусора, совершенно прозрачно для клиентского кода.
← →
Bless © (2006-10-24 17:39) [44]
> guav © (24.10.06 17:29) [41]
>
> > [39] Bless © (24.10.06 17:16)
>
> Они предлагают ресурс в класс запуздырить.
Это я в курсе. Но я ж спросил как раз совсем о другом. Чем помогут автоматические деструкторы, если нужно выполнить действия НЕ связанные с освобождением ресурсов.
Например:query.DisableControls;
try
....
finally
query.EnableControls;
end;{try}
Что мне тут в класс запуздыривать?
← →
Bless © (2006-10-24 17:42) [45]
> Bless © (24.10.06 17:39) [44]
> Это я в курсе. Но я ж спросил как раз совсем о другом.
Че-то написал и засомневался. Может обертки тут и помогут... Знатоки c++, как мой код из [44] будет в обернутом виде выглядеть?
← →
MacroDenS © (2006-10-24 17:55) [46]
zdm © (24.10.06 15:05) [27]
И получим 1С :)
Не для 1С потребуется неразбавленный продукт - (мат в чистом виде) * (20 грамм чисторусского напитка 96 градусов на каждую строчку кода)
← →
Celades (2006-10-24 18:12) [47]
> Bless © (24.10.06 17:42) [45]
Такой код - пример плохого проектирования. Не выполняется правило безопасности с точки зерения исключений. Если генерируется исключение - то, либо операция выполняется до конца(что в ряд ли, если сгенерировалось исключение), либо не изменяется состояние объектов. А значит твой код вполне может быть в дектруторе класса, который за собой "подчищает" окружение.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.046 c