Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/12/2014, 00:16
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 3 meses
Puntos: 38
Respuesta: problema con clases derivadas en C++

Código C++:
Ver original
  1. #include<iostream>
  2. #include<string>
  3. #include<windows.h>
  4. using namespace std;
  5.  
  6.  
  7.  
  8.  
  9. class ClasePrueba {
  10.  
  11.     private:
  12.         string nombre;
  13.         int edad;
  14.        
  15.     public:
  16.         ClasePrueba ( string name, int age ) {
  17.             nombre = name;
  18.             edad = age;
  19.         }
  20.        
  21.        
  22.         void establecerNombre ( string name ) {
  23.             nombre = name;
  24.         }
  25.        
  26.         string obtenerNombre() {
  27.             return nombre;
  28.         }
  29.        
  30. };
  31.  
  32. class ClasePrueba2 : public ClasePrueba {
  33.  
  34.     private:
  35.         string apodo;
  36.    
  37.     public:
  38.         ClasePrueba2 ( string name, int age , string nick ): ClasePrueba( name, age ){
  39.             apodo = nick;
  40.            
  41.         }
  42.        
  43.         void establecerApodo ( string nick ) {
  44.             apodo = nick;
  45.         }
  46.        
  47.         string obtenerApodo() {
  48.             return apodo;
  49.         }
  50.        
  51. };
  52.  
  53. int main() {
  54.  
  55.    
  56.    
  57.     cin.ignore();
  58.     return 0;
  59. }

Mire aqui para una lectura mas comprensiva: http://c.conclase.net/curso/?cap=036b

Te dejo un ejemplo para que vea los constructores destructores y como se llaman de forma por defecto y con parámetros.

Código C++:
Ver original
  1. #include<iostream>
  2. #include<string>
  3. #include<windows.h>
  4. using namespace std;
  5.  
  6. // Clase base:
  7. class Persona {
  8.     public:
  9.         //Constructor por defecto
  10.         Persona() { suNombre = "paco: "; cout << suNombre << " Constructor(defecto) Persona llamado" << endl;  }  // si se llama el constructor por defecto es el de paco
  11.        
  12.         //Constructor con parametros
  13.         Persona( string unNombre ) {
  14.             suNombre = unNombre;
  15.             cout << suNombre << ": Llamado el constructor con parametros de Persona" << endl;            
  16.         }
  17.        
  18.         //Destructor por defecto
  19.         ~Persona() { cout << suNombre << ": Destructor(defecto) Persona llamado" << endl; }
  20.    
  21.         //voy hacer los datos miembros publicos para no liar mucho cacao XD
  22.         //private:
  23.         string suNombre;
  24. };
  25.  
  26. // Clase derivada de persona y base de Vendedor:
  27. class Empleado : public Persona {
  28.     public:
  29.         //Constructor por defecto
  30.         Empleado() { suNombre = "paco: "; cout << suNombre << " Constructor(defecto) Empleado llamado" << endl; }  // si se llama el constructor por defecto es el de paco
  31.        
  32.         //Constructor con parametros
  33.         Empleado( float unSueldo, string unNombre )
  34.         : Persona( unNombre )
  35.         {
  36.             cout << suNombre << ": Llamado el constructor con parametros de Empleado" << endl;
  37.             suSueldo = unSueldo;
  38.         }
  39.        
  40.         //Destructor por defecto
  41.         ~Empleado() { cout << suNombre << ": Destructor(defecto) Empleado llamado" << endl; }
  42.    
  43.         //voy hacer los datos miembros publicos para no liar mucho cacao XD
  44.         //private:
  45.         float suSueldo;
  46. };
  47.  
  48. //clase derivada de las anteriores
  49. class Vendedor : public Empleado {
  50.     public:
  51.         //Constructor por defecto
  52.         Vendedor() { suNombre = "paco: "; cout << suNombre << " Constructor(defecto) Vendedor llamado" << endl; } // si se llama el constructor por defecto es el de paco
  53.        
  54.         //Constructor con parametros
  55.         Vendedor( int unCodigo, float unSueldo, string unNombre )
  56.         : Empleado ( unSueldo, unNombre )
  57.         {
  58.             cout << suNombre << ": Llamado el constructor con parametros de Empleado" << endl;            
  59.             suCodigo = unCodigo;  
  60.         }
  61.        
  62.         //Destructor por defecto
  63.         ~Vendedor() { cout << suNombre << ": Destructor(defecto) Vendedor llamado" << endl; }
  64.    
  65.         //voy hacer los datos miembros publicos para no liar mucho cacao XD
  66.         //private:
  67.         int suCodigo;
  68. };
  69.  
  70.  
  71.  
  72.  
  73.  
  74. int main() {
  75.  
  76.     Vendedor paco;   //prueba el constructor por defecto
  77.  
  78.     cout << endl;
  79.     Vendedor pepe( 22333, 700.00, "Jose Perez" );
  80.  
  81.     cout << endl;    
  82.     cout << "Vemos datos de paco:" << endl;
  83.     cout << "-Nombre: " << pepe.suNombre << endl;  //los llamo directamente por que son publicos los datos, si no deberia hacer funciones para que me retorne esos datos con geters
  84.     cout << "-Sueldo: " << pepe.suSueldo << endl;  //los llamo directamente por que son publicos los datos, si no deberia hacer funciones para que me retorne esos datos con geters
  85.     cout << "-Codigo: " << pepe.suCodigo << endl;  //los llamo directamente por que son publicos los datos, si no deberia hacer funciones para que me retorne esos datos con geters
  86.    
  87.     cout << endl;
  88.     cout << "$Pulse un boton para seguir..." << endl;
  89.     cout << "Ahora se llama destructores(por defecto) en orden inversa a la que han sidos creados" << endl;
  90.     cin.ignore();
  91.     return 0;
  92. }
Espero que sirva de ayuda =)