Given that all classes are on the heap, why not replace the syntax : CmdLin cl = new CmdLin(argc, argv); with CmdLin cl(argc,argv); saving some typing and repetition. Only when casting to base class would you want to do : CmdLinBase cl = CmdLin(argc,argv);