пример работы константной функции
читая Страуструпа наткнулся на
#include <iostream>
#include <string>
class Date {
private:
bool valid_cache;
std::string cache;
void compute_cache() const;
//....
public:
//....
std::string string_rep() const; //строковое представление
};
std::string Date::string_rep() const{
if (valid_cache == false) {
Date *th = const_cast<Date *>(this);
th->compute_cache();
th->valid_cache = true; //можем делать изменения после const_cast
}
return cache;
}
как я понимаю, функция void computer_cach() const должна считать(делать изменение?) cache, но конкретный пример такой функции я не могу привести, так как
- функция ничего не возвращает
- функция константная => ничего менять не может
Можно ли дать конкретный пример это работы этой функции?
Ответы (1 шт):
Автор решения: DanAst
→ Ссылка
в старых изданиях Страуструпа встречаются ошибки, в издании 2011 года "Язык программирования C++" код выглядит иначе
class Date {
bool cache_valid;
std::string cache;
void compute_cache_value();
//...
public:
//....
std::string string_rep() const; // строковое представление
};
как видно, void compute_cache_value(); вовсе не константная функция => может изменять cache