1️⃣ What is a Pure Virtual Function?
A pure virtual function is a virtual function in a base class that has no definition and must be overridden in derived classes.
🔹 Syntax
virtual void functionName() = 0; // Pure virtual function
✅ The = 0
at the end makes it a pure virtual function.
✅ A class with at least one pure virtual function is called an abstract class.
2️⃣ What is an Abstract Class?
An abstract class in C++ is a class that cannot be instantiated and serves as a blueprint for derived classes.
It contains at least one pure virtual function.
✔ Used for inheritance and polymorphism.
✔ Forces derived classes to implement specific functions.
3️⃣ Example: Abstract Class with a Pure Virtual Function
#include <iostream>
using namespace std;
class Shape { // Abstract Class
public:
virtual void draw() = 0; // Pure virtual function
};
class Circle : public Shape {
public:
void draw() override { // Implementing the pure virtual function
cout << "Drawing Circle" << endl;
}
};
class Rectangle : public Shape {
public:
void draw() override { // Implementing the pure virtual function
cout << "Drawing Rectangle" << endl;
}
};
int main() {
Shape* s1 = new Circle(); // Base class pointer
Shape* s2 = new Rectangle();
s1->draw(); // Calls Circle's draw() function
s2->draw(); // Calls Rectangle's draw() function
delete s1;
delete s2;
return 0;
}
🔹 Output
Drawing Circle
Drawing Rectangle
✅ Why use an abstract class?
✔ Prevents direct object creation of Shape
.
✔ Forces all derived classes to implement draw()
.
4️⃣ Example: Real-World Use Case (Bank Account System)
#include <iostream>
using namespace std;
class BankAccount { // Abstract class
public:
virtual void accountType() = 0; // Pure virtual function
};
class SavingsAccount : public BankAccount {
public:
void accountType() override {
cout << "This is a Savings Account" << endl;
}
};
class CurrentAccount : public BankAccount {
public:
void accountType() override {
cout << "This is a Current Account" << endl;
}
};
int main() {
BankAccount* acc1 = new SavingsAccount();
BankAccount* acc2 = new CurrentAccount();
acc1->accountType(); // Calls SavingsAccount function
acc2->accountType(); // Calls CurrentAccount function
delete acc1;
delete acc2;
return 0;
}
🔹 Output
This is a Savings Account
This is a Current Account
✅ Encapsulation + Polymorphism in action!
5️⃣ Key Points About Pure Virtual Functions & Abstract Classes
✔ A pure virtual function is declared as = 0
in the base class.
✔ A class with at least one pure virtual function is called an abstract class.
✔ Objects of abstract classes cannot be created.
✔ Derived classes must override pure virtual functions.
✔ Used in interfaces and polymorphism.
Would you like an example with multiple levels of inheritance? 🚀
0 Comments