Здравствуйте, Нахлобуч, Вы писали:
_>>>>Оцените пожалуйста, интересны все мои ошибки, особенно в реализации операторов !!!
_>>>>// Заголовок
Н>>>Н>>>class nvString
Н>>>{
Н>>>public:
Н>>> // Return the length of the string in bytes
Н>>> // Это кэшировать надо
Н>>>
inline int Length()
const
Н>>> {
return m_nLength; }
Н>>>
private:
Н>>>
int m_nLength;
// Может mutable ?
Н>>>};
Н>>>
Н>А смысл? Там же нет константных функций, которые чего-то с длиной делают.
При любом изменении объекта m_nLength должно меняться. Например, написав
str[5] = 0;
у нас длина будет изменена. Но в операторе мы еще не знаем, как изменится длина, поэтому там мы можем написать
m_nLength = -1;
а метод Length переписать так:
int Length() const
{
if( m_nLength==-1 )
m_nLength = strlen( ... );
return m_nLength;
}
Вот в этом случае mutable и потребуется.