Where should I #include <iostream> , in Foo.h or in Foo.cpp?
I think it that it makes sense to #include <iostream> only in Foo.cpp since it is used there and it is not required anywhere in the declaration of class Foo.
You're correct that the .cpp file would be the best place since the .h file never uses the class. IMO you should never include unnecessary files. But you should always include all necessary files, never rely on some other file to include a required file.