http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

Константные методы | Обучение программированию онлайн

Опубликовано: 01.09.2018

видео Константные методы | Обучение программированию онлайн

[C++] Как изменить значение константы? Const и Mutable

Константный метод — это метод, в котором невозможна модификация полей класса. При попытке изменения поля в константном методе, мы получим ошибку компиляции. Например, имеет смысл делать константными get методы. Рассмотрим пример.


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

#include <iostream> using namespace std; class Test { public: Test() { t = 0; } void setValue(int val) { t = val; } int getValue() const { return t; } private: int t; }; void main() { Test test; test.setValue(99); cout<<test.getValue()<<endl; }

В классе Test есть поле t, а также методы setValue() и getValue(). Мы сделали метод getValue() константным, так как основное его назначение — вернуть значение поля t.


2302 - C++ - урок 8

Ключевое слово mutable .

Если у нас ситуация, когда все-таки нужно изменить одно из полей в константном методе, то такое поле делают mutable, т.е. изменяемым. Рассмотрим пример.

#include <iostream> using namespace std; class Test { public: Test() { t = 0; cnt = 0; } void setValue(int val) { t = val; } int getValue() const { cnt++; return t; } void debug() { cout<<"cnt = "<<cnt<<endl; } private: int t; mutable int cnt; }; void main() { Test test; test.setValue(99); cout<<test.getValue()<<endl; test.debug(); }

У нас есть поле cnt, которое представляет собой счетчик. В методе getValue() мы увеличиваем наш счетчик на единицу. Таким образом, в поле cnt содержится количество вызовов метода getValue(). Метод debug() выводит значение нашего счетчика.

Вы можете оставить комментарий ниже.
Карта
rss