TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Статические методы или виртуальные методы? 

             В общем случае,  вам следует делать методы виртуальным.  Ис-
        пользуйте статические методы только в том случае,  если вы хотите
        получить  оптимальную эффективность скорости выполнения и исполь-
        зования памяти.  Однако в этом случае,  как вы видели, вы теряете
        возможности расширения.

             Предположим, что  вы  описываете  объект с именем Ancestor и
        внутри этого объекта вы описываете метод с именем Action.  Как вы
        определяете,  каким должен быть метод,  виртуальным или статичес-
        ким?  Здесь приводится правило большого  пальца:  сделайте  метод
        Action виртуальным, если имеется вероятность, что будущие наслед-
        ники объекта Ancestor будут переопределять Action,  а вы  хотите,
        чтобы будущий код был доступен Ancestor.

             С другой стороны,  помните, что если у объекта имеются любые
        виртуальные методы,  то для этого объекта в сегменте данных будет
        создана таблица виртуальных методов (ТВМ) и каждый экземпляр это-
        го объекта будет иметь связь с ТВМ. Каждый вызов виртуального ме-
        тода должен проходить через ТВМ, тогда как статические методы вы-

        зываются непосредственно.  Хотя просмотр ТВМ является весьма  эф-
        фективным,  вызов  статического метода все равно остается немного
        более быстрым, чем вызов виртуального. И если в вашем объекте нет
        виртуальных  методов,  то  и  ТВМ отсутствует в сегменте данных и
        (что более важно) в каждом экземпляре объекта отсутствуют связи с
        ТВМ.

             Дополнительная скорость  и  эффективное использование памяти
        для статических методов должно уравновешиваться гибкостью,  кото-
        рую  допускают виртуальные методы:  вы можете расширить имеющийся
        код спустя много времени после его компиляции. Помните, что поль-
        зователь вашего типа объекта может рассматривать пути его исполь-
        зования,  которые вам и не снились,  что, в конечном счете, имеет
        основное значение.

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz