EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 600+ Courses All in One Bundle
  • Login

Overloading and Overriding in C++

Home » Software Development » Software Development Tutorials » C ++ Programming Tutorial » Overloading and Overriding in C++

Overloading and Overriding in C++

Introduction to Overloading and Overriding in C++

Let’s begin this by having the basic definitions for Overloading and Overriding in C++.

Overloading: The function name is the same but the parameters and returns type changes. Since we will get to know the difference between the overloaded functions during compile time, it is also called Compile time polymorphism.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Overriding: This is a feature of Object-Oriented Programming language where the function of the child class has the same name as the parent’s class function. As the overriding functionality comes into the picture once the object is declared and the functions are accessed using the objects; that is during the execution of code, this concept of overriding is also called run time polymorphism.

We have their syntax and their programming ways in the later sections.

Syntax of Overloading and Overriding

Here is the syntax of the overloading and overriding given below.

Overloading Syntax:

return_type function_name ( int param_1, string param_2)
{
//function definition
}
return_type_2 function_name ( int param_1, string param_2)
{
//function definition
}
return_type function_name ( int param_1, int param_2)
{
//function definition
}

Popular Course in this category
C++ Training (4 Courses, 5 Projects, 4 Quizzes)4 Online Courses | 5 Hands-on Projects | 37+ Hours | Verifiable Certificate of Completion | Lifetime Access | 4 Quizzes with Solutions
4.5 (4,890 ratings)
Course Price

View Course

Related Courses
Java Training (40 Courses, 29 Projects, 4 Quizzes)C Programming Training (3 Courses, 5 Project)

All three of them together can form an example of the concept of Overloading.

Overriding Syntax:

Class A
{
Public:
void function_name ( int param_1, int param_2)
{
//function definition
}
};Class B : Class A
{
Public:
void function_name ( int param_1 , int param_2)
{
//function definition
}
};

The above is the syntax for the overriding functionality. The main output can be inferred once we declare an object and call those same methods from Class A and Class B. In the functionality of overriding the “Object” plays an important role.

Now let us see an example each for getting to know their functionality better.

Examples of Overloading and Overriding in C++

Here are the examples of Overloading and Overriding in C++ with the output given below:

Example #1 – Overloading

Let’s begin with a simple program.

Code:

#include <iostream>
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
{
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a,b);
}
int calc(int a)
{
int tot=a*a;
cout << " Area of Square A is: " << tot<<endl;
}
float calc(float b)
{
float tot = b*b;
cout << " Area of Square B is: " << tot <<endl;
}
int calc(int a, float b)
{
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
}

Output:

Overloading and Overriding in C++

Now, what if I give a wrong data type values for the variables a, b?

Code:

int main()
{
int a = 10.8;
float b = 12;
calc(a);
calc(b);
calc(a,b);
}

I have only changed the main part from the above program, so here goes the output.

Output:

Overloading and Overriding in C++ 1

It gives us the output as it is going to convert the float value to int data type and gives us the output.

Now as an exercise can you try changing the function return type and parameters and play around with them.

Example #2 – Overriding

Below we can have an example for an overriding functionality in C++.

Code:

#include <iostream>
using namespace std;
class First
{
public:
virtual void Calc( int a , float b)
{
int tot= a*b;
cout << "Square of First class is: "<< tot <<endl;
}
void Other()
{
cout<<"Other function in first class"<<endl;
}
};
class Second : public First
{
public:
// Overriding method
void Calc(int a ,float b)
{
float tot = a+b;
cout << "Addition of second class is: " <<tot<<endl;
}
};
int main()
{
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a,b);
s.Other();
}

Output:

Overriding

Through the above code, we can find that when the reference of the first-class object is assigned to the object created with respect to our second class. And then when we accessed the override method using the object of the base class, we can clearly notice that the derived class output has been displayed. This concept is called overriding. The first and Second classes are the Base and Derived Class respectively. The output of the above is a below:

As an exercise can you try overriding and overloading a function together and check if it is possible or check how the output turns out to be?

How Does it Work?

Let us know how it works.

Overloading: Here, there is no special point that we can have a note of. We need to make sure that the return type or the parameters inside the function vary. If we look above at the programming structure, the functions are declared first and their implementation is given.

Overriding: The syntax of Inheritance and implementation of functions are the key points to be noticed here. In the example above we can notice that the declaration of function with public keyword is quite different.

And in C++, the class definition is ended by a semi-colon (;) and if we need to inherit the base class to the child class, we use the colon (:) symbol. The main functionality of overriding is observed when objects are declared and initialized for the class. After the calling of functions using the objects, we can then clearly understand the concept of overriding.

Advantages

Following are the advantages mentioned below.

  • The one main advantage of these overriding and overloading is time-saving.
  • Save memory space.
  • The readability of the code is increased.
  • Here, for function overloading concept, we can use different same function names for different operations eliminating the use of different function names.
  • Flexibility and maintainability of code become easier.
  • In the case of overriding, the child class can have functions of parent class and can even have its own implementation of that function.
  • The objects can be referenced and the functions of both the parent class and child class can be accessed by the child class.

Conclusion

We have now clearly understood the concepts of both overloading and overriding. In overloading, we have to make sure the difference in the overloaded functions exists either based on return type or the parameters, though the function definition inside them is the same or different.

And in the case of overriding, since it is an object-oriented programming concept, we can only utilize in the form of classes using the functionality of inheritance.

Recommended Articles

This is a guide to Overloading and Overriding in C++. Here we discuss the introduction, how does it works, examples, and advantages of overloading and Overriding in C++ with code implementation. You may also look at the following articles to learn more –

  1. Overloading in C++
  2. Overloading vs Overriding
  3. Overriding in C++
  4. Overriding in Java

C++ Training (4 Courses, 3 Projects, 4 Quizzes)

4 Online Courses

5 Hands-on Projects

37+ Hours

Verifiable Certificate of Completion

Lifetime Access

4 Quizzes with Solutions

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
C plus plus Programming Tutorial
  • Overloading and overriding
    • Overloading and Overriding in C++
    • Overloading in C++
    • Overriding in C++
    • Function Overloading in C++
    • Function Overriding in C++
    • Method Overloading in C++
  • Basic
    • Introduction To C++
    • What is C++
    • Features of C++
    • Applications of C++
    • Best C++ Compiler
    • C++ Data Types
    • C++ Double
    • C++ unsigned int
    • User Defined Data Types in C++
    • Variables in C++
    • C++ Keywords
    • Pointers in C++
    • C++ Void Pointer
    • Function Pointer in C++
    • Iterator in C++
    • C++ Commands
    • Object in C++
    • C++ Literals
    • C++ Reference
    • C++ Undefined Reference
    • String in C++
    • C++ Programming Language (Basics)
    • C++ Identifiers
    • C++ Header Files
    • Type Casting in C++
    • C++ Formatter
  • Operators
    • C++ Operators
    • Arithmetic Operators in C++
    • Assignment Operators in C++
    • Bitwise Operators in C++
    • Relational Operators in C++
    • Boolean Operators in C++
    • Unary Operators in C++
    • C++ Operator[]
    • Operator Precedence in C++
    • C++ operator=()
  • Control Statements
    • Control Statement in C++
    • if else Statement in C++
    • Else If in C++
    • Nested if in C++
    • Continue Statement in C++
    • Break Statement in C++
    • Switch Statement in C++
    • goto Statement in C++
    • C++ Struct
    • Loops in C++
    • Do While Loop in C++
    • Nested Loop in C++
  • Functions
    • C++ String Functions
    • Math Functions in C++
    • Friend Function in C++
    • Recursive Function in C++
    • Virtual Functions in C++
    • strcat() in C++
    • swap() in C++
    • strcmp() in C++
    • ceil function in C++
    • C++ begin()
    • size() in C++
    • C++ test()
    • C++ any()
    • C++ Bitset
    • C++ find()
    • C++?Aggregation
    • C++?String append
    • C++ String Copy
    • C++ end()
    • C++ endl
    • C++ push_back
    • C++ shuffle()
    • malloc() in C++
    • C++ reserve()
    • C++ unique()
    • C++ sort()
    • C++ find_if()
    • Reflection in C++
    • C++ replace()
    • C++ search()
    • C++ Memset
    • C++ size_t
    • C++ Substring
    • C++ Max
    • C++ absolute value
    • C++ memcpy
    • C++ wchar_t
    • C++ free()
    • C++ sizeof()
    • C++ Move Semantics
  • Array
    • Arrays in C++
    • 2D Arrays in C++
    • 3D Arrays in C++
    • Multi-Dimensional Arrays in C++
    • C++ Array Functions
    • String Array in C++
    • C++ Length of Array
    • C++ arraylist
  • Constuctor and Destructor
    • Constructor and Destructor in C++
    • Constructor in C++
    • Destructor in C++
    • Copy Constructor in C++
    • Parameterized Constructor in C++
  • Inhertiance
    • Types of Inheritance in C++
    • Single Inheritance in C++
    • Multiple Inheritance in C++
    • Hierarchical Inheritance in C++
    • Multilevel Inheritance in C++
    • Hybrid Inheritance in C++
  • Sorting
    • Sorting in C++ 
    • Heap Sort in C++
    • C++ Vector Sort
    • Insertion Sort in C++
    • Selection Sort in C++
  • Advanced
    • C++ namespace
    • Encapsulation in C++
    • Access Modifiers in C++
    • Abstract Class in C++
    • C++ Class and Object
    • What is Template Class in C++?
    • C++ Algorithm
    • Data Structures and Algorithms C++
    • C++ Garbage Collection
    • Virtual Keyword in C++
    • Access Specifiers in C++
    • Storage Class in C++
    • Call by Value in C++
    • Multimap in C++
    • C++ Multiset
    • C++ Lambda Expressions
    • Stack in C++
    • C++ Static
    • C++ static_cast
    • Deque in C++
    • C++ Vector Functions
    • C++ 2D Vector
    • C++ List
    • C++ Mutable
    • Enum in C++
    • Abstraction in C++
    • Signal in C++
    • C++ Queue
    • Priority Queue in C++
    • Regular Expressions in C++
    • C++ Hash Table
    • File Handling in C++
    • C++ Stream
    • ifstream in C++
    • C++ ofstream
    • C++ fstream
    • C++ Read File
    • C++ iomanip
    • Macros in C++
    • Templates in C++
    • C++ setprecision
    • C++ Int to String
    • C++ thread( )
    • C++ Thread Pool
    • C++ thread_local
  • Programs
    • Patterns in C++
    • Star Patterns In c++
    • Swapping in C++
    • Reverse Number in C++
    • Palindrome Program in C++
    • Palindrome in C++
    • Factorial Program in C++
    • Fibonacci Series in C++
    • Square Root in C++
    • Random Number Generator in C++
    • Prime Number in C++
    • Leap Year Program in C++
    • Anagram in C++
    • Armstrong Number in C++
    • Reverse String in C++
    • Socket Programming in C++
    • Matrix Multiplication in C++
    • C++ using vs typedef
    • C++ vector vs list
    • C++ vector vs array
  • Interview question
    • C++ Interview Questions
    • Multithreading Interview Questions C++

Related Courses

C++ Training Course

Java Training Course

C Programming Course

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Java Tutorials
  • Python Tutorials
  • All Tutorials
Certification Courses
  • All Courses
  • Software Development Course - All in One Bundle
  • Become a Python Developer
  • Java Course
  • Become a Selenium Automation Tester
  • Become an IoT Developer
  • ASP.NET Course
  • VB.NET Course
  • PHP Course

© 2020 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you
Book Your One Instructor : One Learner Free Class

Let’s Get Started

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA Login

Forgot Password?

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

Special Offer - C++ Training (4 Courses, 3 Projects, 4 Quizzes) Learn More