Since a factory constructor does not directly create a new instance, it cannot use a constructor initializer list . A normal constructor always returns a new instance of the class. A factory constructor is permitted to return an existing instance, an instance of a derived class, or null .