Possible advantages of putting everything in header files:
- Less redundancy (which leads to easier changes, easier refactoring, etc.)
- May give compiler/linker better opportunities for optimization
- Often easier to incorporate into an existing project
Possible disadvantages of putting everything in header files:
- Longer compile/link cycles
- Loss of separation of interface and implementation
- Could lead to hard-to-resolve circular dependencies
- Lots of inlining could increase executable size
- Prevents binary compatibility of shared libraries/DLLs
- Upsets co-workers who prefer the traditional ways of using C++