Interfaces - Kamills-12/2143-OOP GitHub Wiki
In C++, we don’t have a keyword for interface
like in Java or C#. Instead, we use abstract classes where every function is pure virtual.
- Keeps consistency between classes.
- Helps you write flexible code.
- Makes it easy to swap parts of program without breaking things.
#include <iostream>
using namespace std;
// Interface (pure abstract class)
class Drawable {
public:
virtual void draw() = 0; // pure virtual
virtual ~Drawable() = default; // always give interfaces virtual destructors
};
// Concrete class
class Circle : public Drawable {
public:
void draw() override {
cout << "Drawing a circle." << endl;
}
};
class Square : public Drawable {
public:
void draw() override {
cout << "Drawing a square." << endl;
}
};
int main() {
Drawable* shape1 = new Circle();
Drawable* shape2 = new Square();
shape1->draw(); // Drawing a circle.
shape2->draw(); // Drawing a square.
delete shape1;
delete shape2;
return 0;
}