4
« en: Lunes 15 de Diciembre de 2008, 13:28 »
Hola, esta es una pregunta de un examen y la solucion es: 6, 4, 6, 15. Sin embargo, a mi me sale 6, 4 , 15, 15.
Es decir, mi pregunta es, por que en el main, en el segundo cout << a.f(4) <<endl; no se llama a la f de C2 y si a la de C, habiendo echo previamente la asignacion a=c ? Espero haberme expresado con claridad.
P.D: Soy algo novato con C++ y tengo entendido que el tratamiento dinamico de metodos es igual que en JAVA (espero no estar equivocado)
#include <cstdlib>
#include <iostream>
using namespace std;
class C {
private: int v;
public:
C(){ v=2;}
int f(int z) {return z + v;}
};
class C1: public C{
public:
int w;
C1(){w=4;}
};
class C2: public C1{
public:
int x;
C2(){x=7;}
int f(int z) {return 2*z + x;}
};
class C3: public C{
public:
int y;
C3(){y=7;}
};
void main() {
C a;
C1 b;
C2 c;
C3 d;
cout << a.f(4) <<endl;
a=c;
cout << c.w << endl;
cout << a.f(4) <<endl;
cout << c.f(4) << endl;
}