Static Member Functions of Class

Much like the Static
Members
, there also exist static member functions. Just as static members,
static functions can also be accessed independently of any specific object and
thus its primary use is to pre-initialize static members before creation of
any object.


The following program illustrates how static member functions are declared
and used:



// Static Member Functions
#include <iostream.h>

class myclass
{
// declare a
static int a;

public:
// static function
static void init(int x){a=x;}

int get(){return a;}
};

// define a
int myclass::a;

void main()
{
// static functions may
// be called independently
// using the class name
myclass::init(100);

myclass obj;

cout<<obj.get();
}


In the above example the static members function (init() ) is used to initialize
the static member variable ‘a’ before object creation.


A few points to remember:




  • Static member functions can only access other static member of the class
    or global data.




  • Static member functions can’t have a non-static overloaded version.




  • They don’t have a ‘this’ pointer, this is because static
    functions can be called irrespective of specific object (using the class
    name and the scope resolution operator ‘::’).




With these restrictions they have very limited applications, one of them as
we discussed is to initialize other static members before object creation.


Related Articles:


Check out this stream