Player Controller or Character where should I edit

Hi, I’m relatively new to Unreal Engine 5.8, and I’ve been watching tutorials on implementing character actions such as attacking.

Most of the tutorials I’ve seen implement these actions using Blueprints. That seems reasonable to me, but I also came across a tutorial explaining that character actions should be handled in the PlayerController rather than in the Character Blueprint/C++ class, because the controlled Pawn/Character can potentially be switched.

However, I’m confused because the Third Person C++ template provided by Unreal Engine seems to do the opposite. In the generated ThirdPersonCharacter.cpp, the Enhanced Input actions are handled directly by the Character class. The PlayerController mainly seems to be responsible for setting up or mapping the input actions rather than actually implementing the character’s behavior.

This has left me confused about the recommended architecture.

Is the difference simply because some of these tutorials are not using the Enhanced Input system? In other words, is it common for older/tutorial-based implementations to put the input handling and actions directly in the PlayerController, while the newer Enhanced Input setup separates input mapping from the actual character behavior?

More generally, where should actions such as attacking, jumping, dodging, interacting, etc. actually be implemented?

If I continue implementing these actions in the Character class, it seems logical to create different Character subclasses for different types of characters and let the PlayerController control whichever Character/Pawn is currently possessed. That seems more straightforward to me than changing or extending the PlayerController whenever the character changes.

Could someone explain the intended distinction between the responsibilities of the PlayerController and Character/Pawn, particularly when using the Enhanced Input system in Unreal Engine 5.8? I’d also like to understand why the Third Person C++ template is structured the way it is if implementing actions in the Character class is supposedly not recommended.