Static Member Functions of Class in C++
Like static member variable, we can also have static member functions in a class. A member function that is declared static has the following properties:
- A static member function can have access to only other static members (functions or variables) declared in the same class
- A static member function can be called using the class name (instead of its objects) as follows:
class-name :: function-name;
Program below illustrates the implementation of these characteristics:
#include <iostream.h> class test { private: int code; static int count; //static member variable public: void setcode() { code = ++count; } void showcode() { cout << "Object number: " << code << endl; } static void showcount() //static member function { cout << "Count: " << count << endl; } }; int test :: count; void main() { test t1, t2; t1.setcode(); t2.setcode(); test :: showcount(); //accessing static function test t3; t3.setcode(); test :: showcount(); //accessing static function t1.showcode(); t2.showcode(); t3.showcode(); }
Output of the above program would be:
count: 2 count: 3 Object number: 1 Object number: 2 Object number: 3
In the above program:
- The static member function
showcount()
displays the number of objects created till that moment - A count of number of objects created is maintained by the static variable
count
- The function
showcode()
displays the code number of each object - Note that the statement:
code=++count;
is executed wheneversetcode()
function is invoked and current value ofcount
is assigned tocode
. Since each object has its own copy ofcode
, the value contained incode
represents a unique number of its object