В случае foo2
, bar[1]
является локальной переменной массива внутри конструктора.Он не будет доступен после завершения конструктора.
И так как вы сохраняете его как указатель, когда это пространство в стеке используется для чего-то еще, вы получите данные из этого места;вероятный мусор.
Если бы bar[1]
внутри конструктора была переменной static
, это сработало бы для вас.Конечно, я понимаю, что это всего лишь тестовый код, и вы не сделали бы это в реальном коде.