Diferença entre ligação estática e dinâmica

Autor: Laura McKinney
Data De Criação: 1 Abril 2021
Data De Atualização: 17 Poderia 2024
Anonim
Diferença entre ligação estática e dinâmica - Tecnologia
Diferença entre ligação estática e dinâmica - Tecnologia

Contente


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".


  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação:

Base para comparaçãoLigação estáticaLigação dinâmica
Ocorrência de eventoOs 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çãoTodas 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.
VantagemEficiência.Flexibilidade.
TempoExecução rápida.Execução lenta.
Nome alternativoLigação antecipada.Ligação tardia.
ExemploChamada 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 usando espaço para nome std; sobrecarga de classe {int a, b; public: int load (int x) {// primeira função load (). a = x; cout << "O valor de x é" <funct (); // A instrução acima decide qual função de classe deve ser chamada. p = & d1; // O valor do ponteiro é alterado. p-> funct (); // A instrução acima decide qual função de classe deve ser chamada. p = & d2; // Novamente, o valor do ponteiro é alterado. p-> funct (); // A instrução acima decide qual função de classe deve ser chamada. retornar 0; }

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.

  1. Eventos que ocorrem no momento da compilação, como, um código de função está associado a uma chamada de função ou atribuição de valor a uma variável, são chamados de Ligação estática / inicial. Pelo contrário, quando essas tarefas são realizadas durante o tempo de execução, elas são chamadas de Ligação dinâmica / tardia.
  2. A "eficiência" aumenta na associação estática, pois todos os dados são coletados antes da execução. Porém, na Vinculação dinâmica, os dados são adquiridos no tempo de execução, para que possamos decidir qual valor atribuir uma variável e qual função chamar no tempo de execução, o que torna a execução "flexível".
  3. A 'ligação estática' torna a execução de um programa 'mais rápida', pois todos os dados necessários para executar um programa são conhecidos antes da execução. Na "ligação dinâmica", os dados necessários para executar um programa são conhecidos pelo compilador no momento da execução, o que leva tempo para vincular valores aos identificadores; portanto, torna a execução do programa mais lenta.
  4. A Ligação Estática também é chamada de Ligação Antecipada, porque o código de função está associado à chamada de função durante o tempo de compilação, que é anterior à Ligação dinâmica, na qual o código de função está associado à chamada de função durante o tempo de execução, portanto, também é chamado de ligação tardia.

Conclusã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.