this code compiles and runs without errors:
class foo{
  static foo *ref;
  foo(){}
  public:
    static foo *getRef(){
      return ref;
    }
    void bar(){}
};
foo* foo::ref = new foo; // the construcrtor is private!
int main(int argc, const char *argv[])
{
  foo* f = foo::getRef();
  f->bar();
  return 0;
}
could somebody explain why can the constructor be called?
 
     
     
    