mutable specifier |
Mutable data member specifier
|
storage-class-specifier := mutable
|
|
The mutable specifier can be used with the
declaration of a data member. Using it means that the member can be
modified even if the containing object is const.
Example
// Represent a point in Cartesian coordinates. If the user requests polar
// coordinates, compute and cache the polar coordinates. If the Cartesian
// coordinates change, the polar coordinates must be recomputed. The polar
// coordinates are computed only if they are needed.
struct point {
double angle( ) const {
if (! has_angle_) {
angle_ = tan2(y, x);
has_angle_ = true;
}
return angle_;
}
void x(double x) { x_ = x; has_angle_ = has_arg_ = false; }
...
private:
double x_, y_;
mutable double angle_, arg_;
mutable bool has_angle_, has_arg_;
};
int main( )
{
const point pt(1, 2);
std::cout << pt.angle( );
}
See Also
class, const,
declaration, type, Chapter 6
|