Во-первых, обратите внимание, что чтение неинициализированных переменных является неопределенным поведением.Вам нужно определить конструктор для вашего класса.И это не имеет ничего общего со спецификаторами доступа.Просто так (в вашем случае), что protected
член находится по адресу, который ранее содержал значение 0.
Также лучше не использовать имена переменных, начинающиеся с подчеркивания.Они защищены.Разрешается использовать их в области видимости класса, но не следует использовать их в глобальной области видимости.
5.10 Идентификаторы [lex.name]
3 Кроме того, некоторые идентификаторы зарезервированы дляиспользование реализациями C ++ и не должно использоваться иначе;Диагностика не требуется.
...
(3.2) Каждый идентификатор, начинающийся с подчеркивания, зарезервирован для реализации для использования в качестве имени в глобальном пространстве имен.