пример работы константной функции

читая Страуструпа наткнулся на

#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. функция ничего не возвращает
  2. функция константная => ничего менять не может

Можно ли дать конкретный пример это работы этой функции?


Ответы (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

→ Ссылка