Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1162129071
AlexanderMS
2006-10-29 16:37
2006.11.12
Hint к строке состояния (StatusBar).


2-1162110530
Unknowing
2006-10-29 11:28
2006.11.12
Логика программы. Com-порт.


15-1161356781
Gero
2006-10-20 19:06
2006.11.12
Рефакторинг в Delphi 2006


2-1161956417
svg
2006-10-27 17:40
2006.11.12
Внешний вид даты в табл. SQL базы


2-1161676591
port
2006-10-24 11:56
2006.11.12
Подскажите с запросом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский