Константные переменные и параметры
Защищайте данные от изменений
«Константные переменные и параметры» — бесплатный урок C++ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.
Объявление константных переменных
Переменную const нельзя изменить после инициализации. Компилятор обеспечивает это ограничение и обнаруживает случайные записи.
#include <iostream>
int main() {
const int maxUsers = 100;
// maxUsers = 200; // ERROR
std::cout << maxUsers << "\n";
}Параметры функций с константностью
Пометка параметра, передаваемого по значению, как const не позволяет телу функции изменить его локальную копию — это помогает документировать намерение и повышает безопасность.
#include <iostream>
int doubled(const int n) {
// n = 0; // ERROR
return n * 2;
}
int main() { std::cout << doubled(21) << "\n"; }Параметры-ссылки с константностью
Передача по const& позволяет избежать копирования крупных объектов и одновременно гарантирует, что они не будут изменены, — это стандартный способ передавать строки и контейнеры.
#include <iostream>
#include <string>
void printLen(const std::string& s) { // no copy, no change
std::cout << s.size() << "\n";
}
int main() { printLen("hello"); }Указатель на константное значение
const T* означает, что нельзя изменить значение, на которое указывает этот указатель, хотя сам указатель можно переназначить.
#include <iostream>
int main() {
int a = 1, b = 2;
const int* p = &a;
// *p = 5; // ERROR: value is const
p = &b; // OK: pointer can move
std::cout << *p << "\n";
}Константный указатель
T* const — это константный указатель: его нельзя переназначить, но значение, на которое он указывает, можно изменить.
#include <iostream>
int main() {
int a = 1;
int* const p = &a;
*p = 9; // OK: value changeable
// p = nullptr; // ERROR: pointer is const
std::cout << *p << "\n";
}Чтение объявлений справа налево
Читайте объявления с константностью справа налево: const int* const — это «константный указатель на константное значение типа int», поэтому изменить нельзя ни значение, ни указатель.
Зачем нужна корректность константности
Использование const везде, где это уместно, документирует намерение, предотвращает ошибки и позволяет компилятору оптимизировать код. Такая дисциплина называется корректностью константности.
Константность позволяет вызывать функцию из константного кода
Функция, принимающая const&, может принимать как константные, так и неконстантные аргументы, а также временные объекты. Неконстантная ссылка не может быть привязана к временному объекту.
Константные локальные переменные упрощают рассуждение о коде
Объявление локальных переменных как const, если их не следует изменять, делает код понятнее и предотвращает случайное присваивание нового значения.
#include <iostream>
int main() {
const double rate = 0.2;
const double total = 100 * (1 + rate);
std::cout << total << "\n";
}Верхнеуровневая константность значений
Для параметров, передаваемых по значению, верхнеуровневая const не влияет на вызывающий код — она лишь ограничивает тело функции и часто опускается в объявлениях.
Добавляйте константность с самого начала
Сразу писать код с корректной константностью гораздо проще, чем внедрять её позже. Возьмите за правило применять const к параметрам, ссылкам и локальным переменным.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли принцип константности.
Итоги
Вы научились использовать const для переменных, параметров, ссылок и указателей, а также различать указатель на константное значение и константный указатель. Корректность константности документирует намерение, предотвращает ошибки, позволяет привязывать ссылки к временным объектам и способствует оптимизации.
Часто задаваемые вопросы
Урок «Константные переменные и параметры» бесплатный?
Да — полный текст урока «Константные переменные и параметры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Константные переменные и параметры»?
Защищайте данные от изменений Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C++ Academy?
Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Константные переменные и параметры»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C++ Academy?
Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Константные переменные и параметры
- Константные функции-члены
- constexpr и время компиляции
- consteval и constinit