Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 408 — #446<br />
✐<br />
Capítulo 14. Her<strong>en</strong>cia y Composición<br />
X x;<br />
int i(100); // Applied to ordinary definition<br />
int* ip = new int(47);<br />
} ///:~<br />
El propósito de esta "pseudo-llamadas a los constructores" es una simple asignación.<br />
Es una técnica recom<strong>en</strong>dada y un bu<strong>en</strong> estilo de programación, que usted verá<br />
usar a m<strong>en</strong>udo.<br />
ncluso es posible utilizar esta sintaxis cuando se crean variables de tipos predefinidos<br />
fuera de la clase:<br />
int i(100);<br />
int* ip = new int(47);<br />
De esta forma, los tipos predefinidos actúan, más o m<strong>en</strong>os, como los objetos. Sin<br />
embargo, recuerde que no son constructores reales. En particular, si usted no realiza<br />
una llamada explícita al constructor, no se ejecutará ninguna inicialización.<br />
14.3.3. Combinación de composición y her<strong>en</strong>cia<br />
Por supuesto, usted puede usar la composición y la her<strong>en</strong>cia a la vez. El sigui<strong>en</strong>te<br />
ejemplo muestra la creación de una clase más compleja utilizando composición y<br />
her<strong>en</strong>cia.<br />
//: C14:Combined.cpp<br />
// Inheritance & composition<br />
class A {<br />
int i;<br />
public:<br />
A(int ii) : i(ii) {}<br />
~A() {}<br />
void f() const {}<br />
};<br />
class B {<br />
int i;<br />
public:<br />
B(int ii) : i(ii) {}<br />
~B() {}<br />
void f() const {}<br />
};<br />
class C : public B {<br />
A a;<br />
public:<br />
C(int ii) : B(ii), a(ii) {}<br />
~C() {} // Calls ~A() and ~B()<br />
}<br />
};<br />
void f() const {<br />
a.f();<br />
B::f();<br />
// Redefinition<br />
408<br />
✐<br />
✐<br />
✐<br />
✐