Are unused functions (declared in h and defined in cpp) actually included in the final build?
Not for release builds. The compiler and linker can both strip out code that definitely is not/will not be used, called "dead code".
For debug builds, however, it's often advantageous to keep most if not all of the optimizations turned off, including dead code elimination.
-Albatross
Okay that's what I thought because a final build for something I was working on reduced so much in size and I had a lot of unused functions.