0Pricing
C++ Academy · Урок

Переменные-члены и методы

Объявляйте переменные-члены, пишите методы-члены и обращайтесь к ним через экземпляры.

«Переменные-члены и методы» — бесплатный урок C++ Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.

Члены класса

Класс может содержать:

  • Переменные-члены (данные, иногда называемые полями)
  • Функции-члены (методы)
  • Вложенные типы (псевдонимы типов, перечисления, классы)
  • Статические члены (общие для всех экземпляров)

Объявление переменных-членов

Объявляйте их в теле класса. Для ясности используйте инициализаторы значений по умолчанию внутри класса, появившиеся в C++11.

class Person {
    std::string name_ = "unknown";
    int age_ = 0;
public:
    // ...
};

Соглашения об именовании

Распространённые соглашения для закрытых членов:

  • Конечное подчёркивание: name_
  • Начальный префикс m_: m_name
  • Обычные имена с неявным this->

Выберите один вариант и придерживайтесь его.

Определение методов внутри класса

Короткие методы можно определять непосредственно в теле класса — при этом они неявно считаются встроенными.

class Counter {
    int n_ = 0;
public:
    void increment() { ++n_; }
    int value() const { return n_; }
};

Определение методов вне класса

Более длинные методы обычно определяют вне класса, часто в файле .cpp. Используйте оператор разрешения области видимости ::.

// header
class Logger {
public:
    void log(const std::string& msg);
};

// implementation
void Logger::log(const std::string& msg) {
    std::cout << "[LOG] " << msg << "\n";
}

Вызов методов

Используйте точечный синтаксис для объектов и синтаксис со стрелкой для указателей.

Counter c;
c.increment();

Counter* p = &c;
p->increment();

Константные методы

Методы, которые не изменяют объект, следует помечать как const. Их можно вызывать для экземпляров const.

class Counter {
    int n_ = 0;
public:
    int value() const { return n_; }   // does not modify *this
};

Статические члены

Статические члены принадлежат классу, а не экземплярам. Объявляйте их с помощью static, а определяйте в файле исходного кода.

class Logger {
public:
    static int messageCount;
    static void log(const std::string& msg);
};
int Logger::messageCount = 0;

Спецификаторы доступа

Три уровня доступа:

  • public — доступен отовсюду
  • private — доступен только внутри класса
  • protected — доступен внутри класса и производных классов

Инкапсуляция на практике

Делайте члены-данные закрытыми. Предоставляйте доступ к ним через методы, которые обеспечивают соблюдение инвариантов.

class Temperature {
    double celsius_ = 0.0;
public:
    void setCelsius(double c);     // validates range
    double celsius() const { return celsius_; }
    double fahrenheit() const { return celsius_ * 9.0/5.0 + 32; }
};

Методы и свободные функции

Не всё обязательно делать методом. Если функция использует только открытый интерфейс, предпочитайте свободную функцию — это уменьшает связанность.

Быстрая проверка

Какое ключевое слово помечает функцию-член как не изменяющую объект?

Повторение

Переменные-члены хранят состояние каждого экземпляра, а методы работают с этим состоянием. Помечайте методы, не изменяющие объект, как const. Делайте данные закрытыми и предоставляйте поведение через небольшой, продуманный открытый интерфейс.

Часто задаваемые вопросы

Урок «Переменные-члены и методы» бесплатный?

Да — полный текст урока «Переменные-члены и методы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.

Чему я научусь в уроке «Переменные-члены и методы»?

Объявляйте переменные-члены, пишите методы-члены и обращайтесь к ним через экземпляры. Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C++ Academy?

Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Переменные-члены и методы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C++ Academy?

Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. struct и class: когда что использовать
  2. Переменные-члены и методы
  3. Конструкторы и списки инициализации членов
  4. Указатель this и инкапсуляция
← Назад к C++ Academy