Name
const qualifier — Marks objects and functions as constant
Synopsis
cv-qualifier ::= const | volatile
cv-qualifier-seq ::= const | volatile | const volatile | volatile constThe const keyword can be used
as a qualifier when declaring objects, types, or member functions.
When qualifying an object, using const means that the object cannot be the
target of an assignment, and you cannot call any of its non-const member functions. When qualifying
the target of a pointer, it means the destination cannot be modified.
When member functions of a const
object are called, this is a
const pointer. When qualifying a
member function, using the const
qualifier means that within the member function, this is a const pointer to const, and the member function can be called
for const objects. (Member
functions without the const
modifier cannot be called for a const object.)
When declaring pointers and references, be sure to distinguish
between a const pointer (for which
the pointer cannot be assigned, but what it points to can be modified)
and a pointer to const (for which
the pointer can be assigned, but what it points to cannot be
modified).
Example
struct rect {
rect(int x, int y) : x_(x), y_(y) {}
void x(int x) { x_ = x; }
void y(int y) { y_ = y; }
int x( )const { return x_; }
int y( ) const { return y_; }
int area( ) const;
private:
int x_, y_;
};
int rect::area() const { return x() * y( ); }
const rect zero(0, 0);
const rect unit(1, 1);
rect p(4, 2), q(2, 4);
const rect* ptr1 = &zero; // OK: pointer ...