Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

Язык, который всем нравится...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.046 c
1-1159538518
_Guest_
2006-09-29 18:01
2006.11.12
загрузка dll-ки


2-1161841458
pkm
2006-10-26 09:44
2006.11.12
Путь к файлу.


2-1161868824
pathfinder
2006-10-26 17:20
2006.11.12
TThread..


11-1137852891
Vladimir Kladov
2006-01-21 17:14
2006.11.12
KOL/MCK Версия 2.32 + Collapse


6-1150909146
***(H@kker)***
2006-06-21 20:59
2006.11.12
Ошибка при отправке почты! :-(