Question: I know it is not allowed in C++, but why? What if it was allowed, what would the problems be?

Answer: 
A class can simply be declared abstract where it has no abstract methods. I guess that could be instantiated in theory but the class designer doesn't want you to. It may have unintended consequences.

Usually however abstract classes have abstract methods. They can't be instantiated for the simple reason that they're missing those methods.
Basically creation of object is responsible for allocation of memory for member variables and member functions. but here, in pure virtual function we have declaration and defination in derived class.so creation of object generates error.