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.
Abstract classes instantiated would be pretty useless, because you would be seeing a lot more of "pure virtual function called". :)

It's like: we all know that a car would have 3 pedals and a steering wheel and a gear stick. Now, if that would be it, and there'd be an instance of 3 pedals and gear stick and a wheel, I'm not buying it, I want a car, like with seats, doors, AC etc. with pedals actually doing something apart from being in existence and that's what abstract class doesn't promise me, the ones *implementing* it do.