I’ve been taught to keep class definitions and code separate.
However, I’ve seen situations where people would often include some bits of code in the header, e.g. simple access methods which returns a reference of a variable.
Where do you draw the line?
Generally speaking, things you want the compiler to inline, or templated code. In either case, the code must be available to the compiler everywhere it’s used, so you have no choice.
However, note that the more code you put in a header file, the longer it will take to compile – and the more often you’ll end up touching header files, thus causing a chain reaction of slow builds 🙂