I have this question because of the singleton/named constructor. In both cases, the real constructors are protected or private, neither of which can be accessed from outside
A static member function has the same access rights as a non static member function. So yes, it can access any public, protected, and private variable in the class. However you need to pass an instance of the class to the function for the function to be able to access the member. Otherwise a static function can only directly access any other static member in the class.