Инкапсуляция — механизм языка C++, ограничивающий доступ к составляющим объект компонентам (методам и атрибутам), делает их защищенными или приватными, то есть доступными только внутри объекта.
Возможность сокрытия части "внутренностей" класса необходима для создания интерфейса класса, определяющего допустимые действия с объектом.
Например, если
Допустим, мы хотим, чтобы при увеличении возраста студента выводилось поздравление.
В данный момент наличие метода aging() не исключает прямого изменения атрибута age, так как члены класса, описанного со служебным словом класса struct, по умолчанию считаются общими (public). В результате возможно как правильное, так и неправильное использование экземпляра нашего класса.
Управление доступом к частям класса осуществляется при помощи трех квалификаторов:
public: — начало публичной, открытой части класса (интерфейса)
private: — начало приватной, внутренней, сокрытой от внешнего кода части класса
protected: — начало защищенной части класса, сокрытой от всего внешнего кода, кроме прямых наследников
Можно поставить их так:
Тогда компилятор будет отслеживать попытки изменить age напрямую:
Чтобы реализовать принцип икапсуляции в полной мере, все члены класса по умолчанию должны быть сокрытыми, а не публичными. Именно этим отличаются С++-структуры и классы. Класс tStudent можно описать с ключевым словом class.
Методам данного класса доступны все, и скрытые, и публичные атрибуты и методы, так как они "свои".