Is it more optimized to include headers in the header file or .cpp file?

Currently I’m following a tutorial (specifically this one). The tutorial explains how including headers, like the UPaperSpriteComponent or the UCameraComponent in the header file is bad practice as it lengthens compile time if it’s used a lot. So the tutorial explains to use the following implementation:

class UPaperSpriteComponent* PaperSprite;

and then including the required headers in the .cpp file. Is this common practice? Because I’ve seen differing opinions on this throughout the forums, reddit etc.

Yes, it is preferable for compile times when more than one file is including your header file.
This is called forward declaration, and is commonly used in C++.

Note that you can only use this trick when you are declaring pointer or references to the forward declared classes, not when you are deriving from them or instantiating them as members or function parameters. Basically any function that needs to know the exact size of the class can not use a forward declaration.

I’m curious what opinions you’ve come across against this practice.