Despacho estático - Static dispatch
Polimorfismo |
---|
Polimorfismo ad hoc |
Polimorfismo paramétrico |
Subtipagem |
Na computação , o despacho estático é uma forma de polimorfismo totalmente resolvido durante o tempo de compilação . É uma forma de envio de método, que descreve como uma linguagem ou ambiente selecionará qual implementação de um método ou função usar.
Os exemplos são modelos em C ++ e programação genérica em outras linguagens, em conjunto com sobrecarga de função (incluindo sobrecarga de operador ). Diz-se que o código é monomorfizado , com tipos de dados específicos deduzidos e rastreados por meio do gráfico de chamadas , a fim de instanciar versões específicas de funções genéricas e selecionar chamadas de funções específicas com base nas definições fornecidas.
Isso contrasta com o despacho dinâmico , que é baseado em informações de tempo de execução (como ponteiros vtable e outras formas de informações de tipo de tempo de execução).
O envio estático é possível porque há uma garantia de que haverá apenas uma única implementação do método em questão. O despacho estático é normalmente mais rápido do que o despacho dinâmico, que por natureza tem uma sobrecarga mais alta.
Exemplo em ferrugem
Em Rust .
trait Speak {
fn speak(&self);
}
struct Cat;
impl Speak for Cat {
fn speak(&self) {
println!("Meow!");
}
}
fn talk<T: Speak>(pet: T) {
pet.speak();
}
fn main() {
let pet = Cat;
talk(pet);
}
A ferrugem monomorfizará isso quando compilada em:
fn talk_cat(pet: Cat) {
pet.speak();
}
Veja também
Referências
Este artigo relacionado à linguagem de programação é um esboço . Você pode ajudar a Wikipedia expandindo-a . |