Diferença entre ligação estática e dinâmica
Contente
- Gráfico de comparação:
- Definições de ligação estática
- Implementação de ligação estática em C ++ com um exemplo de sobrecarga
- Conclusão:
A associação de associação de uma 'definição de função' a uma 'chamada de função' ou uma associação de um 'valor' a uma 'variável' é denominada 'associação'. Durante a compilação, toda "definição de função" recebe um endereço de memória; assim que a chamada da função é concluída, o controle da execução do programa se move para esse endereço de memória e obtém o código de função armazenado no local executado, isso é Vinculação de 'chamada de função' para 'definição de função'. A ligação pode ser classificada como "ligação estática" e "ligação dinâmica".
Se já é conhecido antes do tempo de execução, qual função será chamada ou qual valor é atribuído a uma variável, é uma "ligação estática". se vier a saber no tempo de execução, será chamado de "ligação dinâmica".
- Gráfico de comparação
- Definição
- Principais diferenças
- Conclusão
Gráfico de comparação:
Base para comparação | Ligação estática | Ligação dinâmica |
---|---|---|
Ocorrência de evento | Os eventos que ocorrem no momento da compilação são "Ligação estática". | Os eventos que ocorrem no tempo de execução são "Ligação dinâmica". |
Em formação | Todas as informações necessárias para chamar uma função são conhecidas no momento da compilação. | Todas as informações necessárias para chamar uma função são conhecidas em tempo de execução. |
Vantagem | Eficiência. | Flexibilidade. |
Tempo | Execução rápida. | Execução lenta. |
Nome alternativo | Ligação antecipada. | Ligação tardia. |
Exemplo | Chamada de função sobrecarregada, operadores sobrecarregados. | Função virtual em C ++, métodos substituídos em java. |
Definições de ligação estática
Quando o compilador reconhece todas as informações necessárias para chamar uma função ou todos os valores das variáveis durante o tempo de compilação, ele é chamado de "ligação estática". Como todas as informações necessárias são conhecidas antes do tempo de execução, elas aumentam a eficiência do programa e também aumentam a velocidade de execução de um programa.
A ligação estática torna um programa muito eficiente, mas diminui a flexibilidade do programa, já que 'valores da variável' e 'chamada de função' são predefinidos no programa. A ligação estática é implementada em um programa no momento da codificação.
Sobrecarregar uma função ou um operador é o exemplo de polimorfismo em tempo de compilação, ou seja, Ligação estática.
Implementação de ligação estática em C ++ com um exemplo de sobrecarga
#incluir Aqui, o valor do ponteiro muda à medida que o programa está em execução e o valor do ponteiro decide qual função da classe será chamada. Portanto, aqui, as informações são fornecidas em tempo de execução, leva tempo para vincular os dados, o que atrasa a execução. No entanto, concluímos que, quando temos conhecimento prévio dos valores da chamada de variável e função, aplicamos a ligação estática. Por outro lado, na Vinculação dinâmica, fornecemos todas as informações no momento da execução.
Conclusão: