нужен для того, чтобы значения и/или типы этих самых атрибутов не изменялись из вне?
Ну да
Что сложного тут вообще? Уже сколько обсуждение может...
А сеттеры позволяют изменить значения этих самых атрибутов?
Атрибуты - название самостоятельной языковой конструкции (https://en.cppreference.com/w/cpp/language/attributes), Вы же говорите о членах классов. Еще: типы изменяться не могут вообще (в крестах статическая типизация).
Ну да, и при этом контролировать эти изменения
Причем, в С++ как в языке никаких сеттеров геттеров нет, это просто одна из идиом ООП
Каким образом? Типо, если есть атрибут класса типа int, в который, по задумке программиста, нельзя вписывать отрицательные числа, то в сеттерах записывается логика, которая проверяет числа, которые пользователь хочет присвоит атрибуту объекта этого класса, на не отрицательность?
Не атрибут, еще раз. Читайте. В остальном - абсолютно верно. Но следует помнить, что на самом деле валидация может быть гораздо более сложная. Не говоря уже о том, что там, помимо валидации, может вызываться громоздкое обновление внутреннего инварианта.
все верно, только это член данных класса, раз уж мы С++ учим
Ну, блин, данные в классе или как их там.
Ну вот хранишь ты чётные числа, тебе присылают через сеттер нечётное, ты можешь это проверить и ничего не сохранять, а , скажем, инициировать ошибку (исключение например)
общий код - это понятия, которые используются в речи, если ты используешь одно, другие другое, то возникает недопонимание.
Всё. теперь понял для чего они нужны.
Да, так, например
А с чего вообще возникли такие проблемы с пониманием этого?
Обсуждают сегодня