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
#include "ejemplo2.h"
using namespace std;
int main() {
Persona Pedro(21, (char*)"Pedro");
Pedro.mostrarDatos();
Pedro.hablar();
Pedro.caminar();
cout << endl;
Alien Marciano(576, (char*)"AFKG756");
Marciano.mostrarDatos();
Marciano.hablar();
Marciano.caminar();
cin.get();
return 0;
}
//ejemplo1.h
#ifndef EJEMPLO1_H_INCLUDED
#define EJEMPLO1_H_INCLUDED
#include <iostream>
using namespace std;
class Persona {
public:
Persona(int _edad, char* _nombre) : edad(_edad), nombre(_nombre) { }
void caminar();
void mostrarDatos();
void hablar();
private:
int edad;
char* nombre;
};
#endif // EJEMPLO1_H_INCLUDED
//ejemplo1.cpp
#include "ejemplo1.h"
void Persona::caminar() {
cout << nombre << " esta caminando..." << endl;
}
void Persona::mostrarDatos() {
cout << "Nombre: " << nombre << "\nEdad: " << edad << endl;
}
void Persona::hablar() {
cout << nombre << " esta hablando..." << endl;
}
//ejemplo2.h
#ifndef EJEMPLO2_H_INCLUDED
#define EJEMPLO2_H_INCLUDED
#include "ejemplo1.h"
class Alien : public Persona {
public:
Alien(int _edad, char* nombre) : Persona(_edad, nombre) { }
};
#endif // EJEMPLO2_H_INCLUDED
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.