PURE_VIRTUAL method

AFAIK it’s only possible to create abstract methods using PURE_VIRTUAL instead of virtual void MyMethod() = 0;
But does this PURE_VIRTUAL also work for non UObject classes? & classes without UCLASS() ?
Until now it seems that it’s also possible that child classes don’t need to implement pure virtual methods with this macro.
can anyone help?