Переменные-члены и методы
Объявляйте переменные-члены, пишите методы-члены и обращайтесь к ним через экземпляры.
«Переменные-члены и методы» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- struct и class: когда что использовать
- Переменные-члены и методы
- Конструкторы и списки инициализации членов
- Указатель this и инкапсуляция