You cannot have static and nonstatic member functions with the same names and the same number and type of arguments.
A static member function does not have a this pointer. You can
call a static member function using the this pointer of a
nonstatic member function. In the following example, the
nonstatic member function printall() calls the static member
function f() using the this pointer:
// This example illustrates a static member function f(). #include <iostream.h> class c { static void f() { cout << "Here is i" << i << endl;} static int i; int j; public: c(int firstj): j(firstj) {} void printall(); }; void c::printall() { cout << "Here is j " << this->j << endl; this->f(); } int c::i = 3; void main() { class c C(0); C.printall(); }
A static member function cannot be declared with the keyword virtual.
A static member function can access only the names of static members, enumerators, and nested types of the class in which it is declared.
Using the Class Access
Operators with Static Members
Member Functions
Static Data Members
Static Members
The this Pointer
Virtual Functions