elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Clases y .h en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Clases y .h en C++  (Leído 5,093 veces)
emom

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Clases y .h en C++
« en: 11 Diciembre 2015, 18:52 pm »

Muy buenos dias, hace un tiempo decidi aprender C++ ya que considero que es un lenguaje eficaz asi que estoy creando aplicaciones con este. Uso el IDE de NetBeans, pero cuando creo una clase se crea un .h el cual contiene todos los metodos sin algun procedimiento y el .cpp el cual hace referencia a este .h y contiene una referencia a los objetos del .h, se que significa eso pero mi duda aqui es ¿Como puedo hacer herencia en las clases creadas de esta manera?
Otra pregunta si utilizo la declaracion que se le parece a Java:

class loquesea{
int queseyo;
}

¿Creen que haya problema para crear un .h posteriormente? ¿Es posible que mediante este procedimiento pueda crear una libreria dinamica? Gracias por su atencion.

Otra cosita mas, ustedes creen que Python es un buen lenguaje o estaria mejor aprender Ruby o C#.


En línea

Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: Clases y .h en C++
« Respuesta #1 en: 11 Diciembre 2015, 20:11 pm »

Simplemente incluyes la cabecera donde se encuentra la clase en la que quieres heredar. En C++ simplemente se necesita avisar que tal cosa existe, ya sea una clase, una función, etc,... y que está definida en algún lugar, así que si trabajarás con ella en 'x' file, tienes que indicarle que existe, es decir, el prototipo.

Acá te dejaré un ejemplo que hice rápido y sencillo:

//main.cpp
Código
  1. #include "ejemplo2.h"
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6.    Persona Pedro(21, (char*)"Pedro");
  7.  
  8.    Pedro.mostrarDatos();
  9.    Pedro.hablar();
  10.    Pedro.caminar();
  11.  
  12.    cout << endl;
  13.  
  14.    Alien Marciano(576, (char*)"AFKG756");
  15.  
  16.    Marciano.mostrarDatos();
  17.    Marciano.hablar();
  18.    Marciano.caminar();
  19.  
  20.    cin.get();
  21.    return 0;
  22. }
  23.  
  24.  

//ejemplo1.h
Código
  1. #ifndef EJEMPLO1_H_INCLUDED
  2. #define EJEMPLO1_H_INCLUDED
  3.  
  4. #include <iostream>
  5. using namespace std;
  6. class Persona {
  7. public:
  8.    Persona(int _edad, char* _nombre) : edad(_edad), nombre(_nombre) { }
  9.    void caminar();
  10.    void mostrarDatos();
  11.    void hablar();
  12. private:
  13.    int edad;
  14.    char* nombre;
  15. };
  16.  
  17. #endif // EJEMPLO1_H_INCLUDED
  18.  
  19.  

//ejemplo1.cpp
Código
  1. #include "ejemplo1.h"
  2.  
  3. void Persona::caminar() {
  4.    cout << nombre << " esta caminando..." << endl;
  5. }
  6.  
  7. void Persona::mostrarDatos() {
  8.    cout << "Nombre: " << nombre << "\nEdad: " << edad << endl;
  9. }
  10.  
  11. void Persona::hablar() {
  12.    cout << nombre << " esta hablando..." << endl;
  13. }
  14.  
  15.  

//ejemplo2.h
Código
  1. #ifndef EJEMPLO2_H_INCLUDED
  2. #define EJEMPLO2_H_INCLUDED
  3.  
  4. #include "ejemplo1.h"
  5.  
  6. class Alien : public Persona {
  7. public:
  8.    Alien(int _edad, char* nombre) : Persona(_edad, nombre) { }
  9. };
  10.  
  11. #endif // EJEMPLO2_H_INCLUDED
  12.  

Como observarás, en ejemplo2.h estoy haciendo herencia de la clase Persona y simplemente coloco la cabecera en donde está esa clase, es decir en ejemplo1.h.
Luego en el constructor de la clase Alien, llamo al constructor de la clase Persona para modificar las variables miembro. Ahora, si quieres incluir más funciones e ir trabajando directamente con esas variables miembro de la clase Persona sin tener que estar llamando funciones, simplemente las cambias de private a protected. Y así será menos tedioso, espero no haberte confundido con eso, es para que lo tengas en cuenta. :)

Sobre tu pregunta sobre cuál lenguaje es mejor, pues depende para qué lo quieras utilizar. Todo lenguaje tiene un gran potencial, pero depende de uno saber aprovecharlo. Un ejemplo sencillo sería, ¿cuál es mejor para aplicaciones de escritorio, C++ o C#? Aunque ambos sirven, C# te simplifica mucho la vida. ¿Y para un juego potente? C++ es el mejor candidato de ambos.

Saludos. :)


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Clases en VB
Programación Visual Basic
Kizar 0 1,389 Último mensaje 17 Marzo 2006, 16:56 pm
por Kizar
clases
Programación Visual Basic
elmaro 2 2,011 Último mensaje 12 Septiembre 2006, 05:51 am
por elmaro
clases en C++
Programación C/C++
mapers 4 4,507 Último mensaje 25 Enero 2011, 06:21 am
por mapers
Clases
.NET (C#, VB.NET, ASP)
TheGhost(Z) 4 3,503 Último mensaje 14 Febrero 2011, 18:15 pm
por Edu
¿que se representa en las clases y diagramas de clases uml?
Programación General
Filantropo 2 3,371 Último mensaje 22 Diciembre 2020, 02:43 am
por Filantropo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines