Обещает ли функция-член с указанием const не изменять объект? Насколько это законно?C++

Программы на C++. Форум разработчиков
Anonymous
Обещает ли функция-член с указанием const не изменять объект? Насколько это законно?

Сообщение Anonymous »

Я не понимаю, что на самом деле обещает функция-член const в C++.

Насколько я понимаю, объявление функции-члена как const означает, что она обещает не изменять объект. Однако в этом примере функция const изменяет объект, отбрасывая const и обновляя внутреннее состояние. Почему это не неопределенное поведение? Обратите внимание, что значения value_ и вычисляемые_ также не изменяются.
class LazyValue {
public:
int value() const {
if (!computed_) {
const_cast(this)->compute();
}
return value_;
}

private:
void compute() {
value_ = expensive();
computed_ = true;
}

bool computed_ = false;
int value_;
};


Подробнее здесь: https://stackoverflow.com/questions/798 ... ect-how-is

Вернуться в «C++»