Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE ESTACIO DE SÁ ENGENHARIA ELÉTRICA LINGUAGEM DE PROGRAMAÇÃO II PROFESSOR : JOÉLIO ALUNA: ANA CAROLINA GARCIA GOMES CAMPOS DOS GOYTACAZES 2017 1-Defina Funções virtuais e amigas demonstrando o código em java e citando um exemplo prático. REPOSTA: Uma função virtual é uma função que é declarada como virtual em uma classe base e redefinida pela classe derivada. Para declarar uma função como sendo virtual, é preciso preceder sua declaração com a palavra chave virtual. A redefinição da função na classe derivada sobrepõe a definição da função na classe base. No fundo, a declaração da função virtual na classe base age como uma espécie de indicador que especifica uma linha geral de ação e estabelece uma interface de acesso. A redefinição da função virtual pela classe derivada especifica as operações realmente executadas pelo método. Quando acessadas normalmente, funções virtuais se comportam como qualquer outro tipo de função membro da classe. Entretanto, o que torna funções virtuais importantes e capazes de suportar polimorfismo em tempode execução é o seu modo de comportamento quando acessado através de um apontador. Lembre-se que um apontador para a classe base pode ser usado para apontar para qualquer classe derivada daquela classe base. Quando um apontador base aponta para um objeto derivado que contém uma função virtual, C ++ determina qual versão daquela função chamar baseada no tipo do objeto apontado pelo apontador. Assim, quando objetos diferentes são apontados, versões diferentes da função virtual são executadas. EXEMPLO : #include <$iostream.h$> class base { public: virtual void vfunc() { cout $\ll$ "Esta e vfunc() de base$\backslash$n"; } }; class derived1 : public base { public: void vfunc() { cout $\ll$ "Esta e vfunc() de derived1$\backslash$n"; } }; class derived2 : public base { public: void vfunc() { cout $\ll$ "Esta e vfunc() de derived2$\backslash$n"; } }; main() { base $\ast$p, b; derived1 d1; derived2 d2; // p aponta para base p = &b; p$\rightarrow$vfunc(); // p aponta para derived1 p = &d1; p$\rightarrow$vfunc(); // p aponta para derived2 p = &d2; p$\rightarrow$vfunc(); return(0); }
Compartilhar