1️⃣ What is Function Overriding?
Function Overriding in C++ occurs when a derived class provides a new implementation of a function that is already defined in its base class.
Key Features:
✅ Same function name in both base and derived classes.
✅ Same parameters in both functions.
✅ Uses virtual
keyword in the base class to enable runtime polymorphism.
✅ Achieved through inheritance.
2️⃣ Syntax of Function Overriding
class Base {
public:
virtual void show() { // Virtual function
cout << "Base class function" << endl;
}
};
class Derived : public Base {
public:
void show() override { // Overriding function
cout << "Derived class function" << endl;
}
};
3️⃣ Example: Function Overriding in C++
#include <iostream>
using namespace std;
// Base Class
class Parent {
public:
virtual void show() { // Virtual function
cout << "This is the Parent class function." << endl;
}
};
// Derived Class
class Child : public Parent {
public:
void show() override { // Overriding the function
cout << "This is the Child class function." << endl;
}
};
int main() {
Parent* p; // Pointer of base class
Child c;
p = &c; // Assign child object to base class pointer
p->show(); // Calls Child's show() function (Runtime Polymorphism)
return 0;
}
🔹 Output
This is the Child class function.
4️⃣ Why Use Function Overriding?
🔹 Achieves Runtime Polymorphism - Calls the correct function at runtime.
🔹 Improves Code Reusability - Allows specialized behavior for derived classes.
🔹 Supports Object-Oriented Design - Enables flexibility in base class inheritance.
5️⃣ Rules of Function Overriding
✔ The base class function must be virtual (virtual void functionName()
).
✔ The overridden function in the derived class must have the same signature (name, parameters, and return type).
✔ Access specifier (public/private/protected) must be compatible.
✔ Use override
keyword (optional but recommended) to avoid accidental mistakes.
6️⃣ Function Overriding vs Function Overloading
Feature | Function Overriding | Function Overloading |
---|---|---|
Definition | Redefining a function in a derived class | Defining multiple functions with the same name but different parameters |
Inheritance Required? | ✅ Yes | ❌ No |
Function Signature | Must be identical to base class | Must have different parameters |
Access Specifier | Must be public/protected | Can be any access specifier |
Polymorphism | Runtime Polymorphism | Compile-time Polymorphism |
7️⃣ Real-World Example: Banking System
#include <iostream>
using namespace std;
// Base Class
class BankAccount {
public:
virtual void accountType() {
cout << "This is a generic bank account." << endl;
}
};
// Derived Class: Savings Account
class SavingsAccount : public BankAccount {
public:
void accountType() override { // Overriding function
cout << "This is a Savings Account." << endl;
}
};
// Derived Class: Current Account
class CurrentAccount : public BankAccount {
public:
void accountType() override { // Overriding function
cout << "This is a Current Account." << endl;
}
};
int main() {
BankAccount* account1;
SavingsAccount savings;
CurrentAccount current;
account1 = &savings;
account1->accountType(); // Calls SavingsAccount's function
account1 = ¤t;
account1->accountType(); // Calls CurrentAccount's function
return 0;
}
🔹 Output
This is a Savings Account.
This is a Current Account.
8️⃣ Summary
✔ Function Overriding allows a derived class to redefine a function from the base class.
✔ Uses virtual
keyword in the base class for runtime polymorphism.
✔ Base class pointers can call overridden functions in derived classes dynamically.
✔ Helps create flexible and reusable object-oriented programs.
Would you like an example with abstract classes (pure virtual functions
)? 🚀
0 Comments