<div dir="ltr">Hola Colegio,<div><br></div><div>Sirve para preparar el uso de polimorfismo (dinámico). Brevemente, el polimorfismo es una prestación para manipular un objeto de una clase como si fuere de otra. Se necesita dos características para el polimorfismo:<br><br>- Formación de una jerarquía (hereditaria) de clases virtuales<br>- Manipulación de objetos, mediante un puntero o una referencia a ellos, de tal jerarquía de clases virtuales</div><div><br></div><div>Por ejemplo,</div><div><br></div><div>class vehiculo<br>{</div><div>public:<br>  virtual void arrancar();<br>  virtual void detener();</div><div>  virtual void avanzar();</div><div>};</div><div><br></div><div><div>class automovil : public vehiculo<br>{</div><div>public:<br><div>  virtual void arrancar();<br>  virtual void detener();</div><div>  virtual void avanzar();</div>};</div></div><div><br></div><div><div><div>class barco : public vehiculo<br>{</div><div>public:<br><div>  virtual void arrancar();<br>  virtual void detener();</div><div>  virtual void avanzar();</div>};</div></div></div><div><br></div><div><div><div>class avion : public vehiculo<br>{</div><div>public:<br><div>  virtual void arrancar();<br>  virtual void detener();</div><div>  virtual void avanzar();</div>};</div></div></div><div><br></div><div>int main()<br>{<br>  vehiculo * lista[5];<br><br>  lista[0] = new barco;<br>  lista[1] = new avion;<br>  lista[2] = new atuomovil;<br>  lista[3] = new atuomovil;<br>  lista[4] = new avion;<br><br></div><div>  for( int i=0; i < 5; i++ )</div><div>  {<br>    lista[i]->arrancar();</div><div><div>    lista[i]->avanzar();</div></div><div>  }</div><div>  ...</div><div>}</div><div><br></div><div>Como puedes ver, 'lista' es un array de punteros a objetos de tipo 'vehiculo', por lo que podemos invocar las funciones miembro: 'arrancar()' y 'avanzar()'. Sin embargo, internamente cada objeto sabe cuál es su tipo original. Cuando se invoque una de estas funciones miembro virtuales, internamente se invocará la versión "correcta" que corresponde a su clase original. Por ejemplo,</div><div><br></div><div>lista[0]->arrancar()  // se invocará:  barco::arrancar()  porque el objeto apuntado es en realidad de tipo 'barco'</div><div><div>lista[1]->arrancar()  // se invocará:  avion::arrancar()</div></div><div><div>lista[2]->arrancar()  // se invocará:  automovil::arrancar()</div></div><div><div>lista[3]->arrancar()  // se invocará:  automovil::arrancar()</div></div><div><div>lista[4]->arrancar()  // se invocará:  avion::arrancar()</div></div><div><br></div><div><br></div><div>Echa un vistazo al capítulo 37 : <a href="http://c.conclase.net/curso/index.php?cap=037#inicio">http://c.conclase.net/curso/index.php?cap=037#inicio</a></div><div><br></div><div><br></div><div>Espero que esto te oriente.</div><div><br></div><div>Steven</div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 9, 2017 at 11:39 AM,  <span dir="ltr"><<a href="mailto:colegio4497@disroot.org" target="_blank">colegio4497@disroot.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u><div><div style="font-family:arial,sans-serif;font-size:13px"> <br><br></div></div></blockquote></div></div></div>