Pregunta sobre herencia y polimorfismo

Iniciado por Rodrigosolari, 5 Mayo 2012, 19:59 PM

0 Miembros y 1 Visitante están viendo este tema.

Rodrigosolari

buenas mi pregunta va ahacerca sobre Herencia, Polimorfismo y contructores
en herencia, se ereda todos los metodos, y los constructores son un metodo??
mi pregunta va sobre la linea comentada del codigo, no se supone que ese constructor debe heredar al la clase b, y el constructos polimorfico(elque recibe parametros, debe estar incluido en la clase b???, porque tenemos que llamar a ese constructor, con el operador :: ?
#include <iostream>
using namespace std;
class ClaseA {
public:
    void Incrementar() {
    cout << "Suma 1" << endl;
}
void Incrementar(int n) {
    cout << "Suma " << n << endl;
}
};
class ClaseB : public ClaseA {
public:
    void Incrementar() {
    cout << "Suma 2" << endl;
    }
};
int main() {
    ClaseB objeto;
    objeto.Incrementar();
    // objeto.Incrementar(10);
    objeto.ClaseA::Incrementar();
    objeto.ClaseA::Incrementar(10);
    cin.get();
    return 0;
}

david_BS

La única "Incrementar" propia de la clase B no lleva parámetros, y aunque B herede de la clase A, el compilador acepta como referencia de nombre a la de la clase B, osea a la primera y única "Incrementar" de B, ya que el objeto es de clase B.

aparte los constructores son del mismo nombre de la clase, no se a que estás haciendo referencia con tu pregunta sobre los constructores..

en resumen, se trata de un problema a causa de que ambas clases tienen una función propia llamada "Incrementar", por lo que para usar herencia vas a tener que especificar que la referencia es a la clase A, en este caso


objeto.ClaseA::Incrementar();
objeto.ClaseA::Incrementar(10);



Rodrigosolari

me ekivoke crei que eran constructores.. .estuve enfermo yno me percate de ese detalle... osea metodos polimorficos no se heredan si la clase hererada tiene el mismo metodo... si tuviera otro metodo... ajm ajm... por ejemplo void Incrementar1(int a, int b); si podria llamar desde la clase hererada