Topic 59 of 83
Abstract Classes
Overview
An Abstract Class is an interface. It forces derived classes to implement certain functions. It is created by placing at least one Pure Virtual Function (`= 0`) inside the class.
Syntax
cpp
class Shape {
public:
// Pure Virtual Function (= 0)
virtual void draw() = 0;
};
// You CANNOT instantiate Shape:
// Shape s; // ERROR!
class Circle : public Shape {
public:
// MUST implement draw, otherwise Circle is also abstract
void draw() override {
cout << "Drawing Circle";
}
};Common Pitfalls
- Forgetting to implement a pure virtual function in a child class, causing mysterious compiler errors stating that the child class cannot be instantiated.
Interview Tips
- Abstract classes act as pure interfaces (like `interface` in Java). They define a contract that all child classes must follow.
Real-World Example
Defining a Plugin interface that developers must adhere to.
example
cpp
class IPlugin {
public:
virtual void initialize() = 0;
virtual void execute() = 0;
virtual ~IPlugin() {} // Virtual destructors are mandatory for interfaces
};
class AudioPlugin : public IPlugin {
public:
void initialize() override { /* Setup audio */ }
void execute() override { /* Play audio */ }
};