Здравствуйте, Вадим Никулин, Вы писали:
ВН>При любом изменении объекта m_nLength должно меняться. Например, написав
ВН>ВН> str[5] = 0;
ВН>
ВН>у нас длина будет изменена. Но в операторе мы еще не знаем, как изменится длина, поэтому там мы можем написать
ВН>ВН> m_nLength = -1;
ВН>
ВН>а метод Length переписать так:
ВН>ВН> int Length() const
ВН> {
ВН> if( m_nLength==-1 )
ВН> m_nLength = strlen( ... );
ВН> return m_nLength;
ВН> }
ВН>
ВН>Вот в этом случае mutable и потребуется.
Тода лучше ввести
operator [] который смог бы отличить чтение (константный) от записи (неконстантный оператор) и изменять
m_nLength (если требуется) в последнем.