Главная страница
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.048 c
2-1161870322
КлЯкСа
2006-10-26 17:45
2006.11.12
Как создать форму на основании другой, взятой за класс.


15-1161493938
pkm
2006-10-22 09:12
2006.11.12
Восстановление инфы.


15-1161948265
MikePetrichenko
2006-10-27 15:24
2006.11.12
Требуется программист


15-1161752978
nikolay_sch
2006-10-25 09:09
2006.11.12
Ошибка при инсталяции...


15-1161506068
SergeiDos
2006-10-22 12:34
2006.11.12
XLGrid для Delphi7