Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено smav 19 сентября 2003 г. 16:48
В ответ на: ..и еще хотелось бы услышать отправлено blackbit 19 сентября 2003 г. 12:57

>>Классовые методы - это аналог статических функций-членов класса C++
Может я не в курсе, но статические методы не могут быть виртуальными.

Ссылка на класс - __classid(имя_класса) (Borland-specific)
Виртуальные конструкторы - __declspec(delphiclass) и можно иметь виртуальные конструкторы (Borland-specific)
Здесь понятно - Borland ввел их для переноса интерфейса к VCL на C.

Локальных функций нет, но разве их отсутствие создает какие-то проблемы?
Честно говоря да, так как локальные функции имеют доступ к локальным переменным охватывающей функции. На С можно сделать их аналог:

typedef struct
{ int localVar1;
...
}TlocalParams;

static void localFunc(TlocalParams * prams)
{
...
}

void globalFunc(void)
{ TlocalParams params;
localFunc(¶ms);
}

Но это все тяжело читается и выглядит искуственно. Кроме того локальная функция паскаля не видна снаружи. Этот пример показывает различие "философии" языков. На паскале вы описываете задачу не заботясь о реализации (это дело компилятора), на С - реализацию этой задачи.

>Модули мало чем отличаются от обычных translation unit С++
Скорее ближайший аналог модулей - namespace, но пространства имен являются глобальными для всего проекта, тогда как модули видны только в охватывающих их модулях. Благодаря этому упрощается работа с большими проектами, в которых отдельные разработчики могут произвольно выбирать имена для своих глобальных объектов.

>Приведите мне пример "нескольких конструкторов с одинаковым набором >параметров", что-то я не соображу, для чего таковые(если есть) могут >быть нужны.
Пожалуйста:
у объекта есть конструктор Create который создает новый объект и конструктор Load, который загружает его из стандартного глобального потока - оба без параметров.

На счет 1000 страниц - полное и почти исчерпывающее описание паскаля - грамматика, занимает 2-3 страницы. Стандарт ISO на extended pascal меньше 100 страниц. То есть весь синтаксис описывается простыми правилами, что удобно как при обучении, так и при работе. Я вот с С интенсивно работаю уже больше 3 лет и все-равно постоянно приходится лазить или в стандарт или в Кернигана. С паскалем таких проблем не было и нет.

На счет деструкторов с параметрами я погорячился. А вот несколько деструкторов я использую часто. Пример: у формы в VCL есть 3 деструктора:
Destroy - уничтожает объект
Free - уничтожает объект, если self<>nil, т.е если он не был уже уничтожен
Release - перед уничтожением дожидается, что все сообщения от окна были обработаны
Если я создаю потомка формы, я скорее всего буду перекрывать Destroy - Free и Release будут работать автоматически.
При закрытии приложения система вызовет Free, так как дожидаться обработки сообщений приложением нет смысла.
Если я закрывают форму без закрытия приложения - буду вызывать Release

Ладно, надо хоть немного полезным делом заняться:)

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru