• Martes 19 de Noviembre de 2024, 06:33

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.


Mensajes - LolazoMan

Páginas: [1]
1
C/C++ / Re: Pregunta sobre tratamiento de metodos en C++
« en: Lunes 15 de Diciembre de 2008, 16:54 »
Ok, muchas gracias por las respuestas y por la paciencia.

Un saludo.

2
C/C++ / Re: Pregunta sobre tratamiento de metodos en C++
« en: Lunes 15 de Diciembre de 2008, 16:41 »
Yo te lo comentaba basandome en el funcionamiento en Java ya que de C++ se mas bien poco, quizas por eso te pareció raro que te pidiera mas precision.

Entonces, la pregunta se podria reducir a:

En C++, si yo tengo un objeto a de la clase C y un objeto a1 de la clase C1, siendo C1 subclase de C, y ambas clases teniendo un metodo llamado f, al hacer a=a1 se sustituye la funcion f de a por la funcion f de a1?? Basicamente es eso a lo que me refiero.

3
C/C++ / Re: Pregunta sobre tratamiento de metodos en C++
« en: Lunes 15 de Diciembre de 2008, 16:12 »
Gracias por responder pero, perdona, pero no entiendo tu explicacion.

La clase C tiene mas de un campo, no solo v, sino tambien el metodo f y, en concreto esta frase "Lo que hace a=c; es nada en definitiva ya que C tiene un solo campo (v) y en el objeto c no se lo cambia el estado de a no varia al hacer esa asignacion. Entonces se ejecuta su metodo:" no la entiendo.

¿Podrias ser un poco mas preciso por favor?

Yo ahi lo que estoy viendo es que se hace una asignacion de un objeto de la clase C a uno de la clase C2, por lo tanto, hay tratamiento dinamico de metodos y, al ejecutar cout << a.f(4) <<endl; se deberia de usar la f de C2 y no la de C.

4
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]