2012年2月15日 星期三

Static Data Members


A static data member is a data member that is shared by all instances of the class. There is only one occurrence of the static data member regardless of how many class objects exist. Static data members are still access controlled (private vs. public). Private static data members may not be accessed by non-member functions. Static data members must be defined (initialized) outside of the class definition and outside of member function definitions.

Example 5-3 - Static Data Member

1      // File: ex5-3.cpp - static data member
2     
3      #include <iostream>
4      using namespace std;
5     
6      // function prototype
7      void funk(void);
8     
9      class Circle
10      {
11      private:
12          double radius_;
13          static unsigned numCircles_;
14      public:
15          Circle (double r) { radius_ = r; numCircles_++;}
16          Circle (const Circle& r) {radius_ = r.radius_; numCircles_++;}
17          Circle (void) {radius_ = 1.; numCircles_++;}
18          ~Circle (void) {numCircles_--;}
19          void printCircleCount();
20      };
21     
22      unsigned Circle::numCircles_ = 0;     // static member definition
23     
24      void Circle::printCircleCount(void)
25      {
26          cout << "Number of Circles = " << numCircles_ << endl;
27      }
28     
29     
30      int main(void)
31      {
32          Circle c1(5.);
33          c1.printCircleCount();
34          Circle c2;
35          c2.printCircleCount();
36          c1.printCircleCount();
37          {
38              Circle c3(1.5);
39              c3.printCircleCount();
40          }
41          c1.printCircleCount();
42          Circle c4(c1);
43          c1.printCircleCount();
44     
45          funk();
46          c1.printCircleCount();
47          return 0;
48      }
49     
50      void funk(void)
51      {
52          Circle tempLocal;
53          tempLocal.printCircleCount();
54      }



*****  Output *****

Number of Circles = 1
Number of Circles = 2
Number of Circles = 2
Number of Circles = 3
Number of Circles = 2
Number of Circles = 3
Number of Circles = 4
Number of Circles = 3

沒有留言:

張貼留言