Ponto V! - Programação de Jogos Profissional
www.pontov.com.br - @pontov - Facebook
--
Antes de enviar um e-mail para o grupo leia:
http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo
para Eventos do Grupo C & C++ Brasil:
http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira: vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en
Nesse caso, também seriam exemplos de sobrecarga, certo? Pois você teria que elaborar um construtor para cada tipo da classe filha.
O C++ não tem reflexão, portanto, não é possível (pelo menos, não de forma trivial sem RTTI ou sem usar recursos mais macabros) testar pelo tipo do objeto apontado pelo ponteiro.
Observe como o mecanismo acima não é suficiente para garantir uma implementação genérica de makeCopy: a possibilidade de enumerar construtores em (2) não garante a presença de um construtor por cópia na lista de construtores do objeto obtido em (1). Invariavelmente, é preciso um contrato entre programadores para garantir a presença do construtor por cópia. Porém, se é preciso pagar o custo deste contrato, i.e. impor ordem aos humanos programadores, a "reflexão" trás zero economia comparada com uma simples função virtual pura.
--
P.
-- reuben