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

Если внутри метода не производится изменение значений полей, то его можно объявить константным. Для этого после списка параметров указывается ключевое слово 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 {}

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов