Name

mutable specifier — Mutable data member specifier

Synopsis

               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

Get C++ In a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.