Ligação dinâmica em C++: explicação, funções e implementação

Publicados: 2021-02-04

Índice

Introdução

Este artigo irá orientá-lo no funcionamento da vinculação dinâmica em C++ . Espera-se que você tenha um conhecimento básico do funcionamento de herança e ligação estática em C++. Isso ocorre porque algumas limitações da associação estática são removidas pela associação dinâmica. Mostraremos a você, juntamente com códigos simples e adequados, como a vinculação dinâmica é útil.

O que é Ligação Dinâmica?

Por vinculação, geralmente queremos dizer vincular um objeto a outro. Em termos de linguagens de programação, a vinculação não é muito diferente. É a ligação de uma definição de função e uma chamada de função. Mas por que 'dinâmico'? Em palavras simples, a vinculação dinâmica está apenas atrasando a escolha ou seleção de qual função executar até seu tempo de execução. Usando a vinculação dinâmica em C++ , escolhemos qual função podemos executar com base no tipo subjacente do objeto.

Essa flexibilidade não era oferecida aos programadores com vinculação estática. A ligação estática costumava acontecer em tempo de compilação e não em tempo de execução. Além disso, a vinculação estática fez a ligação da chamada de função e definição durante o tempo de compilação, enquanto, como você sabe agora, a vinculação dinâmica não faz isso até o tempo de execução.

A vinculação dinâmica nos permite ignorar as diferenças de tipo, fornecendo flexibilidade na escolha de qual tipo de função precisamos naquele instante de tempo de execução. Ao examinar esta declaração, podemos entender que a vinculação dinâmica nos permite manipular diferentes objetos usando apenas um único nome de função. Isso reduz a complexidade do código e também permite que o programador tenha mais facilidade durante a depuração.

Funções virtuais

Já falamos muito sobre vinculação dinâmica em C++ . Mas como proceder com isso? Para implementar a vinculação dinâmica em seu código C++, você precisa usar 'funções virtuais'. Então, o que são funções virtuais?

Este artigo não abordará extensivamente funções virtuais, pois elas são importantes o suficiente para um artigo separado. Mas você receberá informações suficientes sobre funções virtuais para entender claramente a vinculação dinâmica.

Funções virtuais são funções-membro especiais para as quais as chamadas feitas por meio de um ponteiro (ou referência) são resolvidas em tempo de execução, com base no tipo do objeto com o ponteiro. Em palavras simples, se você definir uma função virtual em uma classe base, poderá substituir a função em classes derivadas.

Este é o poder das funções virtuais. Em C++, você define uma função virtual usando a palavra-chave 'virtual' no início da definição da função. Talvez você não precise repetir a palavra-chave virtual para cada classe derivada de uma classe base porque uma vez que uma função é declarada 'virtual', ela permanecerá 'virtual' em todas as classes derivadas.

Implementação C++

Isso é sobre funções virtuais. Agora vamos olhar para um programa para entender a ligação dinâmica em C++ :

Programa #1 :

Vemos duas classes: - A classe A é a classe 'base', enquanto a classe B é a 'classe derivada'. Dentro de ambas as classes, há uma função com o mesmo nome 'display'. Na classe pai, há outra função chamada final_print() chamando a função display(). Na função main(), criamos dois objetos diferentes para duas classes diferentes, chamando a mesma função display().

Vamos ver a saída do programa acima.

Saída para o Programa #1:

Conforme esperado, a saída executa a função display() da classe base duas vezes, conforme definido em tempo de compilação (ligação estática). Mas esta não é a saída que queríamos.

Agora, para converter o código acima em uma ligação dinâmica, precisamos usar funções virtuais. Vamos ver como fazer isso.

Programa #2:

Acabamos de adicionar a palavra-chave 'virtual' para ambas as nossas funções display() na Classe A e na Classe B, tornando-as funções virtuais. Essa é a única mudança necessária. Assim como antes, chamamos a mesma função final_print() usando dois objetos diferentes. Vamos ver qual saída temos agora.

Saída para o Programa #2 :

Esta é a saída que queríamos, e a obtivemos usando a vinculação dinâmica das funções.

Aprenda cursos de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Conclusão

Neste artigo, analisamos o conceito de vinculação dinâmica em C++ . Para resumir, a vinculação dinâmica nos permite flexibilidade chamando uma única função para manipular objetos diferentes. Como é evidente em nosso código, chamamos a mesma função display() fazendo dois objetos diferentes para nos dar duas saídas diferentes. Isso é possível porque a vinculação dinâmica ocorre em tempo de execução, ao contrário da vinculação estática que ocorre em tempo de compilação.

Se você estiver interessado em aprender mais sobre desenvolvimento full-stack, confira o Programa PG Executivo do upGrad & IIIT-B em Desenvolvimento de Software Full-stack, projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, mais de 9 projetos e atribuições , IIIT-B Alumni status, projetos práticos práticos e assistência de trabalho com as principais empresas.

O que é linguagem de programação C++?

C++ é uma linguagem de programação de uso geral. É uma das linguagens de programação mais utilizadas no mundo. C++ é uma versão aprimorada da linguagem C e fornece recursos que facilitam a programação orientada a objetos. C++ é uma linguagem de programação de propósito geral, enquanto C é uma linguagem de programação de propósito especial. O C++ foi criado como uma extensão do C para dar suporte à programação orientada a objetos e é usado para desenvolver aplicativos de desktop, aplicativos para dispositivos móveis, sistemas embarcados e de tempo real e aplicativos e serviços da web. C++ é uma linguagem de programação imperativa, procedural, multiparadigma, compilada e de propósito geral. Ele suporta programação estruturada, programação orientada a objetos e programação genérica. Possui um sistema de tipo dinâmico e gerenciamento de memória explícito.

O que é programação orientada a objetos?

OOP é a maneira de criar código reutilizável, fácil de manter e legível. Em suma, OOP é um paradigma de programação que se baseia em projetar o software em torno dos objetos do mundo real. Por exemplo, em Java, se você deseja projetar um software que lida com livros, você cria uma classe chamada Book e, em seguida, cria instâncias separadas (objetos) dessa classe representando um único livro. O mesmo se aplica a outras classes que você precisa criar no software.

O que é ligação dinâmica em C++?

A vinculação dinâmica associa o significado de um identificador em um texto de programa com a definição desse identificador encontrado em tempo de execução. Essa associação de significado é chamada de vinculação. É o princípio fundamental da programação orientada a objetos. Identificadores vinculados dinamicamente são as ramificações e folhas da hierarquia de classes orientada a objetos. Eles são dinâmicos porque são resolvidos em tempo de execução, não em tempo de compilação. As ramificações e folhas da hierarquia de classes orientada a objetos são dinâmicas porque estão vinculadas às classes derivadas delas.