-
> Рихтера можно для начала почитать.
а я его и читаю... просто поискал по ключевым словам ответов, смотрю это дело у него обсуждается на ~480 странице... а я еще дальше ~120 не ушел :)
-
> Expert .NET IL Assembler.
А это зачем?! Во всяком случае, для принятия решения "а стоит ли?".
Всё равно что выбирая: "Писать ли мне на Дельфи, или может на Ц++ остаться?" -- начать читать х86 ассемблер.
-
> DiamondShark © (14.05.08 17:07) [141]
У меня после прочтения стало выстраиваться более точное представление работы .NET. А соблазна перейди на .NET стало меньше.
-
>oxffff © (14.05.08 17:16) [142]
Скорее на C++\Managed C++.
Подождем Tiburon.
-
> Подождем Tiburon.
что за зверь?
-
> а за это больно бьют по нежным местам... ЮЗ, помню, хорошо
> рассказывал, за, помоему, $10 за warning и 5$ за hint. уважам'с
> и однозначно одобрям'c.
А как же например?
Symbol '<element>' is specific to a platform ?
------------------
В Си запрещено создавать экземпляры абстрактного класса на этапе компилирования? Или запрещено даже в качестве типа переменной использовать?
-
> Symbol '<element>' is specific to a platform ?
это к Юре
> В Си запрещено создавать экземпляры абстрактного класса
> на этапе компилирования?
там вообще запрещено классы объявлять :)
-
> А как же например?
> Symbol '<element>' is specific to a platform ?
{$WARN SYMBOL_PLATFORM OFF}
Все эти Platform-specific после смерти Kylix годятся разве что в кунсткамеру
-
> Или запрещено даже в качестве типа переменной использовать?
Использовать в качестве типа переменной -- это и есть создавать экземпляры.
Разрешено использовать в качестве типа указателя.
-
> KSergey © (14.05.08 11:40) [99]
> А абстрактные методы, по-моему, начинаешь осознавать, когда
> конечным твоим родуктом становятся библиотеки. Когда их
> вид и интерфейс должны быть коммерческого качества.
+100.
1. Олег (Ega23) - обрати внимание на эти слова. Когда твоим продуктом станет не end-user application, а что-то вроде VCL (пусть даже и сильно меньшего масштаба) - тогда ты оценишь полезность abstract.
2. На строке AbstractClass.Create() компилятор выдает предупреждение. Для тех, кто соблюдает культуру программизма этого вполне достаточно. А те, кто не соблюдает, все равно налепят ошибок - если не здесь, так в других местах. Поэтому что-то там запрещать - особого смысла не имеет. Достаточно предупредить.
-
> Когда твоим продуктом станет не end-user application, а
> что-то вроде VCL (пусть даже и сильно меньшего масштаба)
> - тогда ты оценишь полезность abstract.
Ну возможно. Я думаю, мы по этому поводу ещё приватно поговорим... :)
-
> Ega23 © (14.05.08 19:24) [150]
На рыбалке?
:о)))))))))
-
> DiamondShark (14.05.2008 16:05:09) [129]
Так и в Дельфи тоже, абстрактные классы инстанциировать нельзя.
Но мы то не про классы, а про методы, а это разные вещи.
-
> Юрий Зотов © (14.05.08 19:33) [151]
>
> > Ega23 © (14.05.08 19:24) [150]
>
> На рыбалке?
> :о)))))))))
>
Это через полтора месяца. Я думаю 28 мая... :)
-
> А зачм в Delphi нужна директива abstract? В чём её прелесть?
>
Полезная директива. Помимо контроля, ее можно использовать и для более земных целей. Допустим есть приложение, работающее с некоторым терминалом. Разработан базовый абстратный класс, к которому выполняются обращения из основного приложения, например:
TTerminalDriver = class
public
function GetVersion: Integer; virtual; abstract;
procedure Config; virtual; abstract;
function GetData: OleVariant; virtual; abstract;
end;
Для взаимодействия с каждым типом терминала (у каждого производителя будет свой протокол) удобно располагать код в DLL (по одной DLL для каждого типа терминала). В каждой DLL есть тот же класс, но без директивы "abstract", т.е. реализация необходимой функциональности. В каждой DLL экспортируется одна функция "InitDriver", в которой создается объект класса TTerminalDriver и возвращается в виде результата. Остальное думаю понятно - что один драйвер, что десять, для приложения разницы нет никакой. При разработке новой DLL не нужно изменять старые и т.д. Одна особенность: новые функции добавляются всегда в конец класса, при этом увеличивается номер версии.
Того же можно достичь и массой других способов, но этот - самый краткий (короче уже просто некуда) и простой.
-
только некорректный...
-
>[154] Loginov Dmitry © (2008-05-14 22:41:00)
а ещё за вынесение классов в DLL надо бить канделябром. чтобы в следующий раз неповадно было.
---
Understanding is not required. Only obedience.
-
вынесение то фик с ним, пусть там у себя внутри длл работает сколько влезет, но возврат результатом экспортной функции чужеродного тела и работа с ним в хосте как с кровинушкой... зцих с гвоздями. пожизненный.
но, хозяйкам на заметку, устал уже говорить, замена dll на bpl все решает :)
ну или ручное инстанцирование в dll общих rtti и мм по образу и подобию bpl
-
> а ещё за вынесение классов в DLL надо бить канделябром.
> чтобы в следующий раз неповадно было.
Канделябр сломаешь :)
-
>[157] Palladin © (2008-05-14 23:03:00)
>замена dll на bpl все решает :)
кроме того, что ничем иным как дельфой они не делаются. отсюда я и говорю, что нефиг специфические вещи в DLL пихать.
---
Understanding is not required. Only obedience.