CVОписатель ::= const ::= *****
Так что небольшая модификация функции-члена PrintVal, связанная с добавлением cvОписателя const: void PrintVal() const;
в прототипе и
void ComplexType::PrintVal() const { ::::: }
в определении функции обеспечивает относительную защиту данных от возможной модификации.
CVОписатель const в заголовке функции заставляет транслятор воспринимать операторы, которые содержат в качестве леводопустимых выражений имена данных-членов, возможно, в сочетании с this указателем, как ошибочные. Например, следующие операторы в этом случае оказываются недопустимы.
this->CTcharVal = 125; real = imag*25; imag++;
cvОписатель const в заголовке функции не допускает непосредственной модификации значений принадлежащих объекту данных.
Заметим также, что this указатель включается также в виде дополнительного параметра в список параметров конструктора. И в этом нет ничего удивительного, поскольку его значением является всего лишь область памяти, занимаемая объектом.