C++ Программирование в среде С++ Builder 5

Ключевое слово mutable


Константная функция-элемент “обещает” не изменять значений элементов данных класса, что позволяет применять ее на константных объектах. Тем не менее, в некоторых ситуациях имеет смысл разрешить некоторым элементам меняться даже у константных объектов. Например, некоторый существенный набор данных изменять ни в коем случае нельзя, в то время как отдельный элемент, скажем, некоторое сообщение, может и должно меняться. В этом случае можно объявить элемент данных с ключевым словом mutable:

class AnyClass {

int value;

mutable const char *msg;

public.:

AnyClass (): value (0), msg(NULL) {}

int GetValueO const;

// ... };

j nt AnvClass::Get Value() const

{

msg - "New message!";

// Допускается, поскольку msg - mutable.

//

// value изменять нельзя:

//

// value = 111;

//

return value;

}

Модификатор mutable не может применяться совместно с const или static (в приведенном примере все верно, поскольку const относится не к msg, а к содержимому строки, на которую он ссылается).



Содержание раздела