Этот вопрос может вам помочь.
Динамическая отправка обычно относится к нескольким диспетчерам.
Рассмотрим приведенный ниже пример. Я надеюсь, что это может вам помочь.
class Base2;
class Derived2; //Derived2 class is child of Base2
class Base1 {
public:
virtual void function1 (Base2 *);
virtual void function1 (Derived2 *);
}
class Derived1: public Base1 {
public:
//override.
virtual void function1(Base2 *);
virtual void function1(Derived2 *);
};
Рассмотрим случай ниже.
Derived1 * d = new Derived1;
Base2 * b = new Derived2;
//Now which function1 will be called.
d->function1(b);
Он назовет function1
, взяв Base2*
не Derived2*
. Это связано с отсутствием динамической множественной отправки.
Позднее связывание является одним из механизмов реализации динамической отдельной отправки.