A constructor can not be virtual because at the time when constructor is invoked the virtual table would not be available in the memory, hence we can not have virtual constructor Also, let me google that for you