I need to get several classes to inherit from one another, but for the sake of organisation in the project I'm working on at the moment, I want to have them in different source code files.

At the moment, I am doing it like this:
Code:
/* Contents of foo.h */

class Foo
{
           private:

           public:
                    void func(char *cstring);

};


/* Contents of bar.h */

#include "foo.h"

class Bar : public Foo
{
          private:

          public:
                 /* Methods */

};
But, efficiency is a big part of the program I am writing, I want to get maximum efficiency, and so I was wondering, if I do it like this, won't the file foo.h in the example get compiled over and over again? since I have about 8 or 9 other header files getting compiled off one header file which contains this "super class", lol.

I was wondering if there was a better way of doing it to get more efficient code. also, is my program stucture the best one to use?