In C++ you have to put the prototypes in .h file and include the same
in .cpp file in which you should give the implementation.
This is not true, the prototype can go anywhere including in a cpp file.
If you wanted to you could put the function in 1 cpp file and then separately put a prototype in every other cpp file you wish to call it from. However this would be extremely bad practice and asking for errors later in project if the function prototype got change.
The only stipulation is that a prototype has been seen before it is called. Good practice states that you should only have 1 prototype for any given function in your code, in a header file if that function is to be called from multiple other files or in the cpp file itself if it is a static function.
This is the difference between what you can do and what it is a good idea to do in order to produce maintainable code that is more likely to be bug free.
C++, like C before it, allows you to do all sorts of things that would be considered bad practice. It is up to the programmer to avoid doing them in order to increase the quality of their own code.
This is what a coding standard is about.