• Martes 19 de Noviembre de 2024, 06:19

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - LolazoMan

Páginas: [1]
1
C/C++ / Pregunta sobre tratamiento de metodos en C++
« 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;
}

Páginas: [1]