Skip to content

Abstract Classes

What is an Abstract Class?

An abstract class in C++ is a class that contains at least one pure virtual function.
It cannot be instantiated directly, meaning you cannot create objects of an abstract class.

An abstract class serves as a base class and is meant to be inherited by other classes that will implement its pure virtual functions.


๐Ÿ”‘ Syntax of Abstract Class

cppCopyEditclass AbstractClass {
public:
    virtual void display() = 0;  // pure virtual function
};

Any class with = 0 in a virtual function becomes an abstract class.


๐Ÿง  Real-Life Analogy

Imagine you have an abstract class called “Shape”.
You can’t draw “Shape” directly, but you can draw a Circle, Rectangle, or Triangle โ€” each of which is a specific implementation of that abstract shape.


โœ๏ธ Example of Abstract Class in C++

#include <iostream>
using namespace std;

class Shape {
public:
virtual void draw() = 0; // Pure virtual function
};

class Circle : public Shape {
public:
void draw() override {
cout << "Drawing Circle" << endl;
}
};

class Rectangle : public Shape {
public:
void draw() override {
cout << "Drawing Rectangle" << endl;
}
};

int main() {
Shape* s1 = new Circle();
Shape* s2 = new Rectangle();

s1->draw(); // Output: Drawing Circle
s2->draw(); // Output: Drawing Rectangle

delete s1;
delete s2;

return 0;
}

๐Ÿ“Œ Key Points about Abstract Classes

FeatureDescription
Has at least one pure virtual functionYes (virtual func() = 0;)
Can be inheritedYes
Can have normal functionsYes
Can have data membersYes
Can create object directlyโŒ No (compilation error)
Can have constructors/destructorsโœ… Yes

๐Ÿงพ Why Use Abstract Classes?

  • To define a common interface for a group of classes.
  • To implement runtime polymorphism.
  • To enforce that derived classes must implement specific behaviors.
  • To support the concept of “interface” or “blueprint” in OOP.

โŒ What Happens If You Don’t Override the Pure Virtual Function?

If a derived class does not override all the pure virtual functions from the abstract class, it also becomes abstract, and you cannot create objects of it.


โœ… Example: Error on Instantiating Abstract Class

class Base {
public:
virtual void show() = 0;
};

int main() {
Base b; // โŒ Error: Cannot create object of abstract class
return 0;
}

๐ŸŽฏ Uses of Abstract Classes in Real Applications

  • GUI applications: Abstract “Window”, “Button”, or “Event” classes
  • File I/O operations: Abstract “FileHandler” class
  • Games: Abstract “Character” or “Enemy” class
  • Database systems: Abstract interface for query execution

โœ… Summary

TopicExplanation
Abstract ClassA class with at least one pure virtual function
PurposeActs as a base class for derived classes
Object CreationNot allowed
Used forInterfaces, enforcing behavior, runtime polymorphism
ContainsPure virtual functions, normal functions, and data members