The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
C++ и диспетчеризация, !*! dimonna, 28-Фев-08, 18:47  [смотреть все]
Уважаемое сообщество,

Вопрос к знающим по теме: прочитал в инете что С++ поддерживает только одинарную диспетчеризацию. Это натолкнуло меня на вопрос, что подразумевается под диспетчеризацией языка вообще, и какой например из языков поддерживает множественную диспетчеризацию?

Буду ОЧЕНЬ признателен за исчерпывающую информацию, поскольку обращение к книгам особого результата не принесло.

Спасибо!
Дмитрий

  • C++ и диспетчеризация, !*! DeadMustdie, 20:36 , 28-Фев-08 (1)
    Двойная диспетчеризация вызова - это возможность динамически определить исполняемый метод не только на основе типа объекта, над которым метод выполняется (поддерживается явным образом в C++, Java и любом другом объектно-ориентированном языке), но и на основе информации о типах аргумента, доступной на этапе выполнения и недоступной статически (на этапе компиляции).

    Механизм двойной диспетчеризации дополняет возможности объектных языков средствами динамического связывания на уровне операций (в дополнение к общеизвестному динамическому связыванию на уровне типов объектов). Наибольшее развитие двойная диспетчеризация получила в функциональных объектно-ориентированных языках, наиболее известным из которых является CLOS.

    На C++ можно эмулировать двойную диспетчеризацию, типичный пример - шаблон проектирования "Посетитель". Тем не менее, усилия по использованию двойной диспетчеризации в C++ явно превышают получаемые выгоды, поэтому обычно программисты C++ избегают применения подобных методик.

    • C++ и диспетчеризация, !*! dimonna, 08:26 , 29-Фев-08 (2)
      >[оверквотинг удален]
      >
      >Механизм двойной диспетчеризации дополняет возможности объектных языков средствами динамического связывания на уровне
      >операций (в дополнение к общеизвестному динамическому связыванию на уровне типов объектов).
      >Наибольшее развитие двойная диспетчеризация получила в функциональных объектно-ориентированных языках, наиболее известным
      >из которых является CLOS.
      >
      >На C++ можно эмулировать двойную диспетчеризацию, типичный пример - шаблон проектирования "Посетитель".
      >Тем не менее, усилия по использованию двойной диспетчеризации в C++ явно
      >превышают получаемые выгоды, поэтому обычно программисты C++ избегают применения подобных методик.
      >

      Отлично, огромное спасибо за подробную информацию!!

      С уважением,
      Дмитрий




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру