Software & Finance

C++ - Static Functions

Static functions in a file restricts the access level to the functions on that file only.

Example for static function is given below:

static const char* GetWelcomeMessage()
static char msg[] = "Welcome to my static function";
        return msg;

int main()


    // GetWelcomeMessage can only be accessed in the current .CPP file
    std::cout << GetWelcomeMessage();
// It will display Welcome to my static function as output


Can I have a static function in a class? Of course, YES. You can have any number of static function. If it is a public static function, you do not even need any class object to access the static member function. You can access it by <class name>::<static function name>. 

A typical example for static function is singleton class. 
static MySingletonClass* GetInstance() is a static member function in the class and it is used in the main function.


MySingletonClass {



    int m_nValue;

    MySingletonClass() { };

    MySingletonClass(const MySingletonClass& other);

    const MySingletonClass& operator = (const MySingletonClass& other);



    static MySingletonClass* m_pMySingletonClass;

    static MySingletonClass* GetInstance()


        if(m_pMySingletonClass == NULL)

            m_pMySingletonClass = new MySingletonClass();

        return m_pMySingletonClass;



    int GetValue() const { return m_nValue; }


    void SetValue(int nVal) { m_nValue = nVal; }



MySingletonClass* MySingletonClass::m_pMySingletonClass = NULL;


int main()


    // Accessing static function GetInstance()       
    MySingletonClass *p1 = MySingletonClass::GetInstance();

    MySingletonClass *p2 = MySingletonClass::GetInstance();

    // Both instances will point to the same object


    std::cout << p2->GetValue();