Обещает ли функция-член с указанием 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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