2012年2月15日 星期三

Static Member Functions


A static member function is a member function that cannot access the this pointer for an object. This means that the static member function cannot access the non-static data members of a class. It is used to access the static data members of a class. Static member functions are called using the class name and scope resolution operator, providing it has public access, as illustrated in the example below. Static member functions may not be const member functions.

Example 5-4 - Static Member Function

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


*****  Output  *****

number of Circles = 1
number of Circles = 2
number of Circles = 0
number of Circles = 1

沒有留言:

張貼留言