Interview Questions

"mutable" Keyword - What is "mutable"?

C++ Interview Questions and Answers

(Continued from previous question...)

"mutable" Keyword - What is "mutable"?

"mutable" is a C++ keyword. When we declare const, none of its data members can change. When we want one of its members to change, we declare it as mutable.

A "mutable" keyword is useful when we want to force a "logical const" data member to have its value modified. A logical const can happen when we declare a data member as non-const, but we have a const member function attempting to modify that data member. For example:

class Dummy {
    bool isValid() const;
    mutable int size_ = 0;
    mutable bool validStatus_ = FALSE; 
      // logical const issue resolved

bool Dummy::isValid() const 
  // data members become bitwise const
  if (size > 10) {
    validStatus_ = TRUE; // fine to assign
    size = 0; // fine to assign

"mutable" keyword in C++ is used to specify that the member may be updated or modified even if it is member of constant object. Example:

class Animal {
    string name;
    string food;
    mutable int age;
  void set_age(int a);

void main() {
  const Animal Tiger(’Fulffy’,'antelope’,1);
    // the age can be changed since its mutable

(Continued on next question...)

Other Interview Questions