A static member function is, in many senses, just a plain old function. The difference is that you have to use a class name to call a static function. But remember that a static member function does not go with any particular instance of a class; therefore you don’t need to specify an instance when you call the static function.
Here’s an example class with a static function:
public: static string MyClassName() { return "Gobstopper!"; } int WhichGobstopper; int Chew(string name) { cout << WhichGobstopper << endl; cout << name << endl; return WhichGobstopper; } };
And here’s some code that takes the address of the static function and calls it by using the address:
typedef string (*StaticMember)(); StaticMember staticfunc = &Gobstopper::MyClassName; cout << staticfunc() << endl;
Note that in the final line, you didn’t have to refer to a specific instance to call staticfunc() — and you didn’t need to refer to the class, either. You just called it. Because the truth is that deep down inside, the static function is just a plain old function.