В этом случае эффект тот же, но экземпляр класса в первом фрагменте займет больше памяти.
Кроме этого, в первом случае это переменная с тем же адресом при каждом вызове, и она сохраняет значение, но во втором случае это не обязательно переменная с тем же адресом - она перераспределяется и повторно инициализируется при каждом вызове.
Так как вы на самом деле никогда не меняете значение переменной i
, вы должны объявить его как const
- это даст более понятный код.