Weapon class hierarchy

For a while I’ve been trying to wrap my head around how to set up a weapon class hierarchy. From my research, I’ve gathered that the best practice is to create a base weapon class that contains all of the variables and functions that would be applicable to each weapon in the game, and then create a class for each weapon type that extends from that base weapon class. My questions are:

  1. When you create a weapon that extends from the base weapon class, how are the default variables assigned? Is this typically done in the construction script through a series of variable assignments? Like this.

  2. In regards to the weapon logic itself, such as firing, reloading, animations, etc, it seems that most people set this up in the base weapon class. Would it be incorrect to do this instead in the player class blueprint instead and just feed all of the variables in from the currently equipped weapon? For example, in this image, I have set up the beginnings of the trigger mechanism for each type of weapon in the game, and this is inside the player class.