.cpp and .h files - organization

What it the advantage of having your program organized as follows - just organization?

main.cpp - the main part of your program
object.h - the defitions for an object your program uses
object.cpp - the implementation for the object, based on the definitions in the object.h file

I've always just stuck the object's definitions AND the object's implementation in a .h file, then only had one .cpp file for my project, but I've noticed a lot of projects do it the way I mentioned above.

The header tells the compiler how things are to be used. The compiler doesn't need to know that it is correct. The linker puts it all together, and if things are amiss it will let you know.

Much like if I tell you to double an int you don't need to know a particular value to write a function. It has a general form. But eventually you need to write code to do this otherwise someone (the linker) will complain.

So you write a header to specify how it is used. You write a module and implement the use. You separately compile each module, and since the compiler has verified that each instance is used correctly* elsewhere, the linker can plop in a function call safely where one is desired. And the code trots merrily off to the function. [stop me I'm rambling]