I wonder why the constructor is put outside of the class itself?
The function definition can be put outside or it can be kept inside. This applies to all member functions, not just constructors. So, let me make your question more general: What is the advantage of defining member functions outside of the class?
It allows keeping the definition of the class short and concise. This is useful in keeping the class definition readable: The member declarations are the most useful information to the user of a class who reads its definition. The definition of the member functions is often an implementation detail that can't or shouldn't be relied on.
It also allows defining the member functions in a separate source file instead of being defined inline in all of the source files that include the class.
So, the advantages are same as separating forward declarations of free functions from their definition. A list of function declarations in a header is analogous to a concise class definition with no inline function definitions.
Defining a function (member or otherwise) out-of-line in its own source file instead of inline of all source files is useful because it allows that single source file to be compiled separately. If any change is made to the function, no other source file need to be compiled. In the inline case, all source files that use the function would have to be compiled again. Likewise, whenever any other source file is compiled, there is no need to compile the out-of-line function from another source file, but an inline function must be compiled in each source file.
These general advantages hardly apply to your trivial example constructor. It is an ideal candidate for inline definition, because its call can be completely optimized away. Also, it is so short that it doesn't affect readability of the class. As such, I would recommend to not define that constructor outside of the class itself.