Пройдет через два года. Или через один, в зависимости от того, как свободное тратится.
Просто прокачивайся.
Макконнел, Кент Бек, Фаулер, Керриган. Сначала структурное, ООП после проработки Рефакторинга. Макконнел в первую очередь, часть про архиьектуру и проектирование нужно пропустить в первый раз, он написал полный гайд, практически, про структурную парадигму и как работаться с массивами.
Обязательно нужно проработать вопрос про ОС (Таненбаум) и устройство компиляторов. Самостоятельно сравнить модели памяти, которые предлагает ОС, Си и C++.
Шаблоны GoF после GRASP, SOLID, YAGNI и TDD и обильного велосипедостроения длительностью ~год.
Книги нужно не просто читать, а разбирать примеры и искать инфу дополнительно. То же самое относится к статьям, вблогам, лекциям, курсам. Если голова пухнет - это признак того, что книгу/вмдео читать/смотреть ещё рано, потому что мозг не может сложить инфу в красивую структуру знаний. Паттерны бесполезны без проработки и без усваивания Рефакторинга. То же самое к архитектурным относится, которые бесполезны для понимания, если не усвоено DDD. Паттерны сначала лучше прорабатывать на каком-нибудь C#. Если уже в состоянии писать компилирующийся код на C++, то с C# никаких проблем не будет. На C++ паттерны прорабатывать стоит только проработки идиом C++.
Что касается самого C++, то cppreference, youtube и все книги, которые только удастся найти. Если на книгу очень много ссылок в интернете, статьях, видео, это значит, что ее нужно прорабатывать в первую очередь.
Для систематизации знаний нужно найти ментора или курс и / или прочесть документацию по технологии раза три.
Прежде, чем лизать библиотеку, нужно прочесть Греба Свитера, а до него нужно разобраться с алгоритмами и структурами данных.
Развитие в первые годы похоже на спираль, поэтому ко всему "изученному" придется возвращаться пару раз.
Насчёт пункта три. Все советуют обязательно прорабатывать алгоритмы, сложность вычислений и структуры данных, паттерны проектирования и архитектурные шаблоны именно в такой последовательности, потому что концепции одни и те же, а реализации разные. Любую информацию можно сохранить хоть в файле, хоть на стеке, вопрос главный - для чего, в каком scope она нужна и какие нужны гарантии и ограничения. Самое лучше место, чтобы узнать это, на текущий момент это GitHub.
У вас в вопросе рядом существуют два уровня - уровень передачи информации между сессиями использования одного приложения и уровень передачи данных между модулями в домене приложения "калькулятор" во время исполнения. В первом случае вам подойдёт сохранение инфо в обычном тестовом файле в своем статически определенном know-how формате (чтобы раньше времени не лезть в сериализацию и парсинг), что делается просто, быстро и средствами STL, а во втором случае вам нужно строить модель домена из классов, абстрагирующих операции, и как-то реализовать простой синтаксический анализатор; в этом случае передача промежуточного результата будет в виде какого-то объекта, и о его виде и задачах с ходу сказать нельзя, потому что все зависит от ТЗ и конкретного набора формул, которые требуется обрабатывать; и к тому же во втором случае без сторонних библиотек не обойтись, иначе слишком растянется процесс.