在「C++程序設計語言」一書中,作者給出了以下例子。他提到「緩存需要先填充才能使用」。在我看來,這就是compute_cache_value函數被放置的原因。但我不明白string_rep()的函數根據其實現做了什麼。感謝您的澄清。一類設計問題
class Date{
bool cache_valid;
string cache;
void compute_cache_value(); //fill cache
// ...
public:
// ...
string string_rep() const;
};
string Date:: string_rep() const
{
if (cache_valid == false) {
Date* th = const_cast<Date*> (this); // cast away const
th->compute_cache_value();
th->cache_valid = true;
}
return cache;
}
此外,作者給出的示例如下:
Date d1;
const Date d2;
string s1 = d1.string_rep();
string s2 = d2.string_rep();
而筆者說,第四個例子顯示未定義的行爲。我想知道爲什麼。