Классы и объекты
Класс и объект
Класс описывает тип, а объект — конкретный экземпляр этого типа.
class Player {public: int health = 100; void TakeDamage(int damage) { health -= damage; if (health < 0) health = 0; }};Player player;player.TakeDamage(25);Класс объединяет данные и операции над ними. public открывает доступ к членам извне.
Поля и методы
Поля хранят состояние объекта. Методы реализуют поведение. Каждый обычный нестатический метод имеет скрытый параметр this, указывающий на текущий объект.
class Counter {public: void Increment() { ++value; } int GetValue() const { return value; }private: int value = 0;};Метод GetValue() const не изменяет состояние объекта и может вызываться для константных объектов.
private и public
В class доступ по умолчанию private. Закрытые поля нельзя напрямую менять снаружи. Это помогает контролировать допустимые состояния объекта.
Статические члены
static-член класса относится к типу, а не к каждому объекту отдельно. Статический метод не имеет this и не может напрямую обращаться к нестатическим полям без объекта.
class Math {public: static int Double(int value) { return value * 2; }};Вызов: Math::Double(5).
const-объекты
Если объект объявлен const, вызывать у него можно только подходящие const-методы. Поэтому методы, которые только читают состояние, стоит помечать const.
Итог
Класс — инструмент для объединения состояния и поведения. Скрывай внутренние детали, предоставляй понятный интерфейс и отмечай методы чтения как const.
