Abstract Class

An abstract class is a class that can’t be instantiated directly — it exists only to be inherited from. It defines structure and behavior that subclasses must complete.

In standard C++, a class becomes abstract when it has at least one pure virtual function:

class Animal
{
    virtual void Speak() = 0; // pure virtual — subclasses must implement
};

You can’t create an Animal, but you can create a Dog that inherits from it and implements Speak().

In Unreal Engine, you can also mark a class abstract with the UCLASS(Abstract) specifier. This tells the engine not to instantiate it — useful when you have a C++ base class and want Unreal to use a Blueprint subclass instead. The engine sees Abstract and skips it, loading only the concrete Blueprint child.

Further Reading

  • Bjarne Stroustrup, The C++ Programming Language — abstract classes and inheritance
  • Unreal Engine Documentation — Class Specifiers (docs.unrealengine.com)