Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 411 — #449<br />
✐<br />
14.4. Ocultación de nombres<br />
asumir que el subobjeto de la clase base esta todavía disponible para su uso, y ha<br />
sido construido - o no se ha destruido todavía).<br />
También es interesante que el ord<strong>en</strong> de las llamadas al constructor para los objetos<br />
miembro no afect<strong>en</strong> para nada el ord<strong>en</strong> de las llamadas <strong>en</strong> la lista de inicializadores<br />
de un constructor. El ord<strong>en</strong> es determinado por el ord<strong>en</strong> <strong>en</strong> que los objetos<br />
miembros son declarados <strong>en</strong> la clase. Si usted pudiera cambiar el ord<strong>en</strong> del constructor<br />
<strong>en</strong> la lista de inicializadores de un constructor, usted podría t<strong>en</strong>er dos secu<strong>en</strong>cias<br />
difer<strong>en</strong>tes de llamada <strong>en</strong> dos constructores difer<strong>en</strong>tes, pero el destructor no sabría<br />
como invertir el ord<strong>en</strong> para llamarse correctam<strong>en</strong>te y nos <strong>en</strong>contraríamos con problemas<br />
de dep<strong>en</strong>d<strong>en</strong>cias.<br />
14.4. Ocultación de nombres<br />
Si se ha heredado de una clase y se proporciona una nueva definición para alguna<br />
de sus funciones miembros, exist<strong>en</strong> dos posibilidades. La primera es proporcionar<br />
los mismos argum<strong>en</strong>tos y el mismo tipo de retorno <strong>en</strong> la definición de la clase derivada<br />
como la clase base. Esto es conocido como redefinición para funciones miembro<br />
ordinarias y sobrecarga, cuando la función miembro de la clase es una función virtual<br />
(las funciones virtuales son un caso normal y serán tratadas <strong>en</strong> detalle <strong>en</strong> el capítulo<br />
15). Pero ¿qué ocurre cuando se modifican los argum<strong>en</strong>tos de la función miembro o<br />
el tipo de retorno <strong>en</strong> una clase derivada Aquí esta un ejemplo:<br />
//: C14:NameHiding.cpp<br />
// Hiding overloaded names during inheritance<br />
#include <br />
#include <br />
using namespace std;<br />
class Base {<br />
public:<br />
int f() const {<br />
cout