Where to release the object in Singleton class? Should we go destructor(Private) or any other static member function? I mean , what is the best solution?
Not the destructor, because deleting the object calls the destructor and that'll be recursive. Normally you would implement a get method which creates the object if it doesn't exist, then returns a reference to itself, and a release method which deletes the object if there are no references left. These are both static functions. If it's a global object of which there will always be one instance then get just returns a reference and release doesn't need to exist.