Вся причина иметь аксессоры (геттеры) и модификаторы (сеттеры) состоит в том, чтобы обеспечить себе дополнительный уровень косвенности.
Этот дополнительный уровень косвенности позволяет вам предоставлять доступ только для чтения вашей переменной к общедоступному интерфейсу, не позволяя изменять ваш элемент данных. Вы все еще можете использовать частный или защищенный сеттер.
Установщики позволяют вам выполнять специальную проверку ошибок, проверку и исправления, когда значение установлено. Например, setDirectory (const std :: string & strPath), вы можете убедиться, что есть косая черта, если пользователь не указал ее. Это гарантирует, что ваше состояние класса всегда будет действительным.
Геттеры также могут защищать ваших участников от того, что они выставлены, чтобы позволить указателям на них. Не допуская указателей на них извне, вы можете быть уверены, что если ваш объект выйдет из области видимости, это не приведет к сбою.
Дополнительный уровень косвенности для получателей / установщиков также позволяет вам изменять элемент данных, который они инкапсулируют.
С помощью метода получения вы также можете получать различные представления ваших данных, например: getMinutes, когда ваш элемент данных фактически сохраняется в секундах.
Это не причина для их использования, но приятный побочный эффект от использования геттеров и сеттеров заключается в том, что вы можете установить точку останова внутри вашего модификатора, например, чтобы точно видеть, когда он изменяется.
Независимо от того, должны вы их использовать или нет, это решение по вашему усмотрению. Если у вас так много членов, что трудно получить методы получения и настройки, вы можете рассмотреть вопрос о сохранении членов данных в структуре и использовании этой структуры внутри вашего класса. Вы могли бы даже предоставить геттеры / сеттеры для объекта сразу для всей структуры.