Thursday, September 18, 2008

c++ - What is "mutable"?

What is "mutable"?
Answer1. 
"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. 

Answer2. 
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 {
public:
bool isValid() const;
private:
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
}
}


Answer2. 
"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 {
private:
string name;
string food;
mutable int age;
public:
void set_age(int a);
};

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


Bitwise Operations - Given inputs X, Y, Z and operations | and & (meaning bitwise OR and AND, respectively), what is output equal to in? 
output = (X & Y) | (X & Z) | (Y & Z);

 


No comments:

Post a Comment

Thanks to given comments.......

My Blog List