home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C10 / StaticMemberFunctions.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  831 b   |  38 lines

  1. //: C10:StaticMemberFunctions.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6.  
  7. class X {
  8.   int i;
  9.   static int j;
  10. public:
  11.   X(int ii = 0) : i(ii) {
  12.      // Non-static member function can access
  13.      // static member function or data:
  14.     j = i;
  15.   }
  16.   int val() const { return i; }
  17.   static int incr() {
  18.     //! i++; // Error: static member function
  19.     // cannot access non-static member data
  20.     return ++j;
  21.   }
  22.   static int f() {
  23.     //! val(); // Error: static member function
  24.     // cannot access non-static member function
  25.     return incr(); // OK -- calls static
  26.   }
  27. };
  28.  
  29. int X::j = 0;
  30.  
  31. int main() {
  32.   X x;
  33.   X* xp = &x;
  34.   x.f();
  35.   xp->f();
  36.   X::f(); // Only works with static members
  37. } ///:~
  38.