Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda sobre polimorfismo c++

Estas en el tema de Duda sobre polimorfismo c++ en el foro de C/C++ en Foros del Web. Hola a tod@s en primer lugar decir que es mi primer post en este foro y dedicarle un saludo a todos los usuarios!!! Tengo un ...
  #1 (permalink)  
Antiguo 01/08/2011, 10:33
 
Fecha de Ingreso: agosto-2011
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Duda sobre polimorfismo c++

Hola a tod@s en primer lugar decir que es mi primer post en este foro y dedicarle un saludo a todos los usuarios!!!

Tengo un pequeño problema teorico acerca del polimorfismo en c++, os cuento a ver si alguien me puede ayudar...

Teniendo una clase base, una clase heredada, y un mismo metodo en ambas, entra en cuestion el polimorfismo, en el programa que estoy realizando para entenderlo siempre que llamo a dicho metodo o funcion se ejecuta este dependiendo del objeto al que llame, hasta aqui ok, pero si quiero que siempre se ejecute el metodo de la clase base habria que poner la palabra VISUAL para indicar esto, (esto es lo que he entendido de la teoria) pero en la practica no ocurre asi, pongo un ejemplo a ver si alguien puede decirme que hago mal o he entendido mal la teoria... (Un saludo a todos y mil gracias de antemano)

Cliente.hpp*************************************** ***
#ifndef _CLIENTE_HPP_
#define _CLIENTE_HPP_
#include <cstdlib>
#include <iostream>


using namespace std;

class Cliente{
private:
string nombre;
string apellido;
public:
Cliente(string nom,string ape);
~Cliente();
virtual string cadena();

};

#endif

Cliente.cpp*************************************** *******
#include <cstdlib>
#include <iostream>
#include "Cliente.hpp"
using namespace std;


Cliente::Cliente(string nom,string ape){
nombre=nom;
apellido=ape;
}

Cliente::~Cliente(){
}

string Cliente::cadena(){
return nombre + " " + apellido;
}

ClienteInternet.hpp******************************* ********
#ifndef _CLIENTEINTERNET_HPP_
#define _CLIENTEINTERNET_HPP_
#include <cstdlib>
#include <iostream>
#include "Cliente.hpp"

using namespace std;

class ClienteInternet: public Cliente{
private:
int tarifa;
public:
ClienteInternet(string nom,string ape,int t);
~ClienteInternet();
string cadena();
};

#endif

ClienteInternet.cpp******************************* **********
#include <cstdlib>
#include <iostream>

#include "Cliente.hpp"
#include "ClienteInternet.hpp"

using namespace std;

ClienteInternet::ClienteInternet(string nom,string ape,int t): Cliente(nom,ape){
tarifa=t;
}

ClienteInternet::~ClienteInternet(){

}

string ClienteInternet::cadena(){

return "Tarifa Plana: "+Cliente::cadena();
}

main********************************************+
#include <cstdlib>
#include <iostream>
#include "Cliente.hpp"
#include "ClienteInternet.hpp"

using namespace std;

int main(){
Cliente c1("Pepe","Lopez");
cout << c1.cadena()<<endl;
ClienteInternet ci1("Jose","Garcia",2);
cout << ci1.cadena()<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}



PD:
Se que para llamar al metodo cadena siempre de la clase base podemos usar:
Cliente::cadena();
pero asi no hace falta visual ni polimorfismo... ¿NO?


****MUCHISIMAS GRACIAS**** UN SALUDO
  #2 (permalink)  
Antiguo 01/08/2011, 12:25
 
Fecha de Ingreso: agosto-2011
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Duda sobre polimorfismo c++

error!!!! he puesto la palabra visual es virtual, en el codigo esta bien!!! sorry

Etiquetas: funcion, programa, visual, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:35.