Re[4]: Моя первая реализация String
От: Вадим Никулин Россия Здесь
Дата: 08.07.04 14:51
Оценка:
Здравствуйте, Нахлобуч, Вы писали:

_>>>>Оцените пожалуйста, интересны все мои ошибки, особенно в реализации операторов !!!

_>>>>// Заголовок
Н>>>
Н>>>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 и потребуется.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.