Глобальные объекты против свободных функций C++?

Глобальные объекты против свободных функций C++?
Глобальные объекты против свободных функций C++?

Итак, вы должны выбрать между синглтоном и кучей свободных функций в пространстве имен, с некоторым выделенным глобальным состоянием в любом случае?

Во-первых, зачем вам нужен синглтон?

Если это просто для того, чтобы они разделяли состояние, рассмотрите возможность извлечения его в TU-внутренние переменные на уровне пространства имен, и сделайте все функции, которые вам нужны, статическими. Нет необходимости возиться с синглтонами, которые плохо воспринимаются из-за вопиющего чрезмерного и неправильного использования, не считая неправильной реализации.

Далее, зачем вообще нужен класс?

Это не Java, вы можете иметь свободные функции и глобальное состояние вне классов, совершенно скрытые от посторонних глаз, если только не запрашивается внешняя связь. Преимущество этого способа - более легкая расширяемость, и если вам не нужно предоставлять специфический интерфейс (для статической инъекции с шаблонами или динамической инъекции с наследованием), то недостатков нет.

На самом деле это предпочтительный способ, нет причин поступать иначе.

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - C++ с нуля, 01, Hello World

Прикрепленное видео 2 - Передача массива в функцию. Как передать массив в функцию. C++ для начинающих. Урок - 35

Прикрепленное видео 3 - C++ Russia 2018: Фёдор Короткий, Память – идеальная абстракция


LetsCodeIt, 5 февраля 2023 г., 01:18