Abstract Classes

Pure virtual functions and interfaces

Interview Relevant: Design patterns foundation

Abstract Classes

Classes with pure virtual functions that cannot be instantiated.

Code Examples

Abstract classes and interfaces.

cpp
1// Abstract class (has pure virtual function)
2class Shape {
3public:
4    // Pure virtual function (= 0)
5    virtual double area() const = 0;
6    virtual double perimeter() const = 0;
7
8    // Can have concrete methods too
9    void describe() {
10        cout << "Area: " << area() << endl;
11    }
12
13    virtual ~Shape() = default;
14};
15
16// Shape s;  // Error! Cannot instantiate abstract class
17
18// Concrete derived class
19class Circle : public Shape {
20    double radius;
21public:
22    Circle(double r) : radius(r) {}
23
24    // Must implement all pure virtual functions
25    double area() const override {
26        return 3.14159 * radius * radius;
27    }
28
29    double perimeter() const override {
30        return 2 * 3.14159 * radius;
31    }
32};
33
34// Interface pattern (all pure virtual)
35class Drawable {
36public:
37    virtual void draw() = 0;
38    virtual ~Drawable() = default;
39};
40
41class Printable {
42public:
43    virtual void print() = 0;
44    virtual ~Printable() = default;
45};
46
47// Implement multiple interfaces
48class Document : public Drawable, public Printable {
49    void draw() override { /* ... */ }
50    void print() override { /* ... */ }
51};

AI Tutor

Ask about the topic

Sign in Required

Please sign in to use the AI tutor

Sign In