O Polimorfismo no C++ é estabelecido através dos métodos virtuais. O que
torna a função virtual especial é que, quando uma é acessada usando-se um
ponteiro da class base para um objeto da classe derivada, o C++ determina
qual função chamar no momento da execução, baseando-se no tipo de objeto
para o qual se aponta. Assim, quando objetos diferentes são apontados,
diferentes versões são executadas.

O ponto chave para se obter esse polimorfismo é que você deve acessá-la pelo
uso de um ponteiro declarado como um ponteiro para a class base. Ainda que
você possa chamar uma função virtual usando o nome do objeto da mesma
maneira que chamaria qualquer outra função membro, somente quando uma função
virtual é acessada por meio de um ponteiro para a class base é que o
polimorfismo em tempo de execução é obtido.

Exemplo:

class Base
{
public:
virtual void Quem(void) { cout << "Base\n";}
};

class Primeira:public Base
{
public:
void Quem(void) { cout << "Primeira\n";}
};

main (void)
{
Base base;
Base *p;
Primeira primeira;

p = &base;
p->quem();

p = &primeira;
p->quem();

return 0;
}

O resultado dessa execução será:

Base
Primeira



----- Original Message -----
From: "Marcelo Quintella" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, March 21, 2001 4:27 PM
Subject: Re: [java-list] Polimorfismo (PARA FECHAR) II


> Eu tenho apenas assistido a toda essa discucao mas nao resisti aa tentacao
> de dar o meu palpite...
>
> Eu estou mais para o lado do Andre do que para o lado do Mister M.
> "Conceito" de qualquer coisa eh uma coisa meio aleatoria. Alguem define o
> conceito e aquilo passa a valer. Mas o que essa discussao toda mostrou eh
> que nenhum dos dois conceitos pegou de verdade, e o termo "polimorfismo"
> passou a significar diferentes coisas dependendo de _quem_ o usa.
>
> Na minha o opiniao isso nao faz a menor diferenca. Sempre achei que
> poliformismo era pura e simplesmente method overriding. Mas os argumentos
a
> favor ou contra a validade do termo para method overload sao igualmente
> fortes.
>
> O que importa para mim eh: Voce sabe usar method overriding
eficientemente?
> Voce sabe usar method overloading eficientemente? Sabe? Entao otimo, nao
faz
> a menor diference qual dos dois eh "polimorfismo" ou nao. Se quiserem
> podemos criar um novo termo e passar a usa-lo...
>
> Pronto. Ai estao os meus cinco centavos...
>
> Abracos a todos,
> Marcelo Quintella
>
>
> ----- Original Message -----
> From: "Andre Mendonca" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: March 21, 2001 1:26 PM
> Subject: RE: [java-list] Polimorfismo (PARA FECHAR) II
>
>
> >
> > Mister M,
> >
> > > -> Depois, alguem em algum ponto do universo (nao lembro
> > > quem, estou correndo atras, acho q era um grupo de autores)
> > > determinou q para ser uma linguagem OO, vc precisa ter
> > > abstracao, encapsulamento, heranca e polimorfismo. Foram
> > > essas caras (preciso achar isso, tah dificil...) q definiram
> > > q polimorfismo EH OVERRING E DYNAMIC BINDING.
> >
> > Isto nao impede que o conceito seja estendido ou re-interpretado.
> > Ou que alguem diga que overloading eh um tipo especifico de
> > polimorfismo. Este alguem, em algum ponto do universo, disse
> > isso e o conceito pegou, tanto que muita gente hoje concorda com
> > ele. Essa pessoa estendeu o conceito. Eu simplesmente nao posso
> > dizer que o cara esta _errado_. Eh um conceito novo.
> >
> > > -> Por isso, o uso de polimorfismo significando overloading foi
> > > considerado inapropriado para OOP, jah q, segundo a definicao dos
> > > camaradas acima, vc precisa implementar o polimorfismo para ser
> > > uma linguagem OO mas nao precisa implementar overloading.
> >
> > Eh exatamente sobre isto que eu estou falando. A linguagem que
> > implementa overloading, de acordo com este novo (?) conceito,
> > implementa "polimorfismo multiplo", ou qualquer outro nome que
> > tenha sido adotado. Eh uma nova nomenclatura, apenas.
> >
> > > Soh estou comentando q sua definicao vem de conceitos q foram
> > > se tornando "deprecated" com o tempo.
> >
> > Pode ate ser, mas ainda sao utilizados e aceitos por _muita_ gente.
> > Essas pessoas nao acham que o termo seja tao deprecated assim.
> >
> > > Eu nao falei qdo disserem polimorfismo, mas sim polimorfismo
> > > no conceito OOP.
> >
> > De novo. Conceito de quem? O conceito nao pode ser estendido?
> >
> > > Polimorfismo em OO eh sempre overriding e dynamic binding
> >
> > De acordo com o seu conceito (e de muitas, muitas outras pessoas,
> > eh bem verdade)
> >
> > > Sim, mas acho q alguem (OMG, sei lah) regulamentou a OO e o
> > > polimorfismo (por consequencia) do jeito q expliquei (so preciso
> > > achar...)
> >
> > Alguem pode ter feito isto e o conceito pode ter sido mudado
> > posteriormente, ou algumas pessoas podem ter adotado uma nomenclatura
> > diferente. Acho que eh saudavel a aceitacao de novos conceitos, por
> > mais estranhos que eles possam parecer. Eh possivel que no futuro
> > chegue-se `a conclusao _unanima_ de que overloading nao eh polimorfismo
> > porem, _hoje_, os dois conceitos sao aceitos. Nao da pra dar as costas
> > para tanta gente que acha o contrario.
> >
> > > Nao, dentro do contexto de algumas linguagens sim, mas em OO,
> > > conceitualmente nao (vide explicacao acima).
> >
> > Nao existe um conceito de OO imutavel eh inquestionavel. Eh assim que
> > as coisas evoluem. Se alguem sugeriu uma modificacao, pode ser que
> > ela seja valida.
> >
> > > Polimorfismo tem a ver com a mesma mensagem
> >
> > Mais uma vez, de acordo com o conceito que voce defende. Outras
> > pessoas discordam.
> >
> > Cordialmente,
> >
> > Andre Mendonca
> > [EMAIL PROTECTED]
> >
> > ------------------------------ LISTA
SOUJAVA ----------------------------
> > http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
> > dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> > regras da lista: http://www.soujava.org.br/regras.htm
> > para sair da lista: envie email para
[EMAIL PROTECTED]
>
> -------------------------------------------------------------------------
> >
>
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
> dúvidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------


_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a