В чем смысл геттеров и сеттеров в C++ (и не только)?

1,00
р.
В c++ я новичок и не могу понять, для чего, собственно, нужны геттеры и сеттеры? Почему нельзя просто сделать переменные внутри класса глобальными и изменять непосредственно их? В чем необходимость делать переменную приватной и создавать функции для ее модификации или получения ее значения?

Ответ
Плюсов много и вот некоторые из них:
можно выборочно давать доступ только к геттеру или только к сеттеру предотвращать изменение переменной со стороны (выдавая геттеру ее копию) не уверен насчет С, но можно ставить брейкпоинты на методы доступа, чтобы узнать, кто и откуда обратился можно добавлять дополнительный код в геттер и сеттер
при установке значения проверять его валидность (и, например, бросать исключение) при установке значения, инициализировать какие-то связанные вещи получать геттером значение не из переменной, а вычислять его логировать доступ к геттеру/сеттеру реализовывать и переопределять поведение геттера/сеттера в дочерних классах


В целом, можно обойтись и без них, но тогда вырастет размер кода, больше времени будет уходить на отладку, компилятор не сможет предостеречь от связанных ошибок. И чем больше/сложнее проект, тем больше пользы они будут приносить.