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