Ключевое слово const
Ключевое слово const указывает компилятору,
что значение сущности изменять нельзя. Его можно
применять к переменным, параметрам функций,
возвращаемым значениям, методам классов и даже
к указателям. Если переменная объявлена как
const, то после инициализации ей нельзя
присвоить новое значение. Для методов классов
const в конце объявления означает, что метод
не изменяет поля объекта. Для указателей
различают указатель на константу и константный
указатель.
Синтаксис
const тип имя = значение;
тип имя_функции(параметры) const;
const тип* указатель;
тип* const указатель;
Пример
Объявим константную переменную и попробуем изменить её значение. Компилятор выдаст ошибку, поэтому в примере мы только читаем значение:
#include <iostream>
using namespace std;
int main()
{
const int num = 5;
cout << num << endl;
return 0;
}
Результат выполнения кода:
5
Пример
Объявим константный метод класса. Такой метод не может изменять поля объекта и вызывается для константных объектов:
#include <iostream>
using namespace std;
class Numbers
{
private:
int a;
int b;
public:
Numbers(int a, int b) : a(a), b(b) {}
int sum() const
{
return a + b;
}
};
int main()
{
const Numbers nums(2, 3);
cout << nums.sum() << endl;
return 0;
}
Результат выполнения кода:
5
Пример
Разница между указателем на константу и константным указателем. В первом случае нельзя менять значение по указателю, во втором - нельзя менять сам адрес:
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int b = 2;
const int* p1 = &a;
p1 = &b;
int* const p2 = &a;
*p2 = 3;
cout << *p1 << " " << *p2 << endl;
return 0;
}
Результат выполнения кода:
2 3