Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Константные методы
Если внутри метода не производится изменение значений полей, то его можно объявить константным. Для этого после списка параметров указывается ключевое слово const
. Внутри константного метода любая попытка изменить значение поля приведет к выводу сообщения об ошибке. Если при объявлении поля указано ключевое слово mutable
, то внутри константного метода допускается изменение этого поля. Пример использования константного метода и применения ключевого слова mutable
приведен в листинге 13.14.
Листинг 13.14. Константные методы
#include <iostream>
class C {
public:
int a, b;
mutable int m; // mutable
C(int x, int y, int z) { // Конструктор
a = x; b = y; m = z;
}
void func() const { // Константный метод
// a = 100; b = 100; // Ошибка
m = 100; // Нормально
std::cout << a << " " << b
<< " " << m << std::endl;
}
};
int main() {
C obj(50, 20, 8);
obj.func(); // 50 20 100
return 0;
}
Если поле может изменять свое значение извне, то после списка параметров указывается ключевое слово volatile
. Это ключевое слово предотвращает проведение оптимизации программы, при котором предполагается, что значение изменяется только в программе. Ключевое слово volatile
может быть указано как отдельно, так и совместно с ключевым словом const
. Пример указания:
void func() volatile {}
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов