Salem, thanks for your answer. But it seems you explained the advantage of making the header file "self-contained".

My question is:
Why "a .cpp file always include the corresponding header file first (see example above)" is able to check whether the header file is self-contained?
What will happen if I include other header files before the corresponding header file of that .cpp file?