Yes it definitely does make sense. The thing is, header files don't contain executable code, or at least they are not supposed to (it's all just convention, anyway). When you see a function defined in a class declaration that is what is known as an "inline" function, and will be expanded inline (potentially) at the point of call. Think of it as macro++. So the code that is executing when that inline function is called is not actually closely related to the header in which it was declared. Rather, it has been sort of "pasted in" to the .cpp module in which it was called, and this confuses some debuggers.