Статическая отправка - Static dispatch
Эта статья не цитировать любой источники.Июнь 2016 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Полиморфизм |
---|
Специальный полиморфизм |
Параметрический полиморфизм |
Подтип |
В вычисление, статическая отправка это форма полиморфизм полностью решена во время время компиляции. Это форма метод отправки, который описывает, как язык или среда выбирают, какую реализацию метода или функции использовать.
Примеры шаблоны в C ++, и общее программирование на других языках в сочетании с перегрузка функции (включая перегрузка оператора ). Код называется мономорфизированный, с конкретными типы данных вывели и проследили через график звонков, чтобы создать конкретные версии общие функции и выберите конкретные вызовы функций на основе предоставленных определений.
Это контрастирует с динамическая отправка, который основан на информации времени выполнения (например, vtable указатели и другие формы информации о типах времени выполнения).
Статическая отправка возможна, потому что есть гарантия того, что существует только одна реализация рассматриваемого метода. Статическая отправка обычно выполняется быстрее, чем динамическая отправка, которая по своей природе имеет более высокие накладные расходы.
Пример в Rust
чертаРазговаривать{fn разговаривать(&себя);}структура Кот;импРазговариватьзаКот{fn разговаривать(&себя){println!("Мяу!");}}fn разговаривать<Т: Разговаривать>(домашний питомец: Т){домашний питомец.разговаривать();}fn главный(){позволятьдомашний питомец=Кот;разговаривать(домашний питомец);}
Rust мономорфизирует это при компиляции в:
fn talk_cat(домашний питомец: Кот){домашний питомец.разговаривать();}
Смотрите также
Рекомендации
- ^ "Общие типы данных - язык программирования Rust". doc.rust-lang.org.
Этот язык программирования -связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |