Итак, допустим имеется класс:
class A {
public:
int& P() { return p; }
private:
int p;
};
и функция:
void F(const A& a) {
// some code ...
int z=a.P();
// some code ...
}
поскольку в эту функцию передается константная ссылка, то вызвать P() не удастся,
поэтому обычно P() перегружают:
class A {
public:
int& P() { return p; }
const int& P() const { return p; }
private:
int p;
};
Так вот, когда методов типа P(), появляется очень много, то задалбывает определять их парами.
В принципе так мы и делали, пока кое кто не предложил определять так:
class A {
public:
int& P() const { return p; }
private:
mutable int p;
};
В принципе это приводит к уменьшению ненужной писанины, а собственно, кто и как с этим борется?