const qualifier

   
const qualifier Marks objects and functions as constant

  cv-qualifier  ::= const  volatile  cv-qualifier-seq  ::= const  volatile  const volatile  volatile const 

The 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 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, 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 to const ptr1->x(42);                  // Error: *ptr is const ptr1 = &p;                    // Error: p is not const ptr1 = &unit;                 // OK: unit is const rect*  const  ptr2 = &p;        // OK: const pointer ptr2 = &q;                    // Error: cannot set ptr2 ptr2->x(42);                  // OK: *ptr2 is not const 

See Also

const_cast , declaration , mutable , type , volatile , Chapter 2

   


C++ in a Nutshell
C++ in a Nutshell
ISBN: 059600298X
EAN: 2147483647
Year: 2005
Pages: 270
Authors: Ray Lischner

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net