Why no header file is OK for implementation?

A very basic thing but quite strange to me.
There is not corresponding header file (fastq.h) for the implementation fastq.cpp which has the line: #include "fastq.h", in a package source code, but at compiling of the whole pkg I did not get any error.
There is no #indef/#endif condition. Checked the compiling process, the fastq.h was never created from the intermediate steps, or by cmake/configure or any other process.
I am quite confused whether a header file (fastq.h) is not needed for the implementation fastq.cpp, as normally the header file is must for the corresponding implementation.
Then my next question is, under which circumstance the header file is not needed?

Thanks!

I see no reference to fastq.cpp or fastq.o in the makefile, so I think that file just isn't compiled at all.

I see. That explained everything.
Thank you!