Function Overloading in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Function Overloading in C++ Notes | Basic Computer Engineering | RGPV BTech First Year


Function Overloading in C++

Function Overloading C++ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг Compile Time Polymorphism Feature рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо (Function Name) рдХреЗ рдЕрдиреЗрдХ Functions рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ Parameters рдХреА рд╕рдВрдЦреНрдпрд╛ (Number of Arguments), Data Type рдЕрдерд╡рд╛ Order of Parameters рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

Compiler Function Call рдХреЗ рд╕рдордп рджрд┐рдП рдЧрдП Arguments рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди-рд╕рд╛ Function Execute рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП Function Overloading рдХреЛ Static Binding рдЕрдерд╡рд╛ Early Binding рдХрд╛ рдЙрджрд╛рд╣рд░рдг рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

Same Function Name

тЖУ

Different Parameters

тЖУ

Compile Time Selection

Introduction to Function Overloading

рдХрд┐рд╕реА Program рдореЗрдВ рдХрдИ рдмрд╛рд░ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╡рд╛рд▓реЗ Functions рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ Input Parameters рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ Function рдХрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдо рд░рдЦрд╛ рдЬрд╛рдП, рддреЛ Program рдмрдбрд╝рд╛ рдПрд╡рдВ рдХрдо Readable рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди Function Overloading рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рд╣реА Function Name рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди Parameter Lists рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ Program рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд, рд╕рд░рд▓ рдПрд╡рдВ Reusable рдмрди рдЬрд╛рддрд╛ рд╣реИред


Definition of Function Overloading

рдЬрдм рдПрдХ рд╣реА Scope рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ Functions рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рддрдерд╛ рдЙрдирдХреЗ Parameters рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ Function Overloading рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ Return Type рдмрджрд▓рдиреЗ рд╕реЗ Function Overloading рдирд╣реАрдВ рд╣реЛрддреАред


Need of Function Overloading

  • рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди Function Name рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Code Readability рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Code Reusability рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред
  • Compile Time Polymorphism рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Different Data Types рдкрд░ рд╕рдорд╛рди Operation рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Program рдХреЛ Maintain рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Duplicate Function Names рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред
  • Professional Software Development рдореЗрдВ Modular Code рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

Features of Function Overloading

  • Supports Compile Time Polymorphism.
  • Same Function Name рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • Parameters рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
  • Number, Type рдпрд╛ Order of Parameters рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
  • Compiler Compile Time рдкрд░ рд╕рд╣реА Function рдЪреБрдирддрд╛ рд╣реИред
  • Return Type рдХреЗрд╡рд▓ рдЕрдХреЗрд▓реЗ рдмрджрд▓рдиреЗ рд╕реЗ Overloading рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддреАред
  • Program рдХреА Readability рдмрдврд╝рддреА рд╣реИред
  • Code Reusability рдмреЗрд╣рддрд░ рд╣реЛрддреА рд╣реИред

Advantages of Function Overloading

Advantage Description
Code Reusability рдПрдХ рд╣реА Function Name рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ Operations рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
Easy Maintenance Program рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдПрд╡рдВ Maintainable рдмрдирддрд╛ рд╣реИред
Compile Time Polymorphism Compiler Compile Time рдкрд░ рд╕рд╣реА Function рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред
Better Readability рд╕рдорд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА Function Name рд╣реЛрдиреЗ рд╕реЗ Code рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред
Flexibility Different Types рдХреЗ Data рдкрд░ рд╕рдорд╛рди Logic рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Syntax of Function Overloading

Function Overloading рдореЗрдВ рдПрдХ рд╣реА Function Name рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ Parameter Lists рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред

class Demo { public: void add(int a,int b); void add(double a,double b); void add(int a,int b,int c); };

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ add() Function рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ Parameter Lists рдХреЗ рд╕рд╛рде Declare рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Compiler Function Call рдХреЗ рд╕рдордп Arguments рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА Function рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред


Working of Function Overloading

рдЬрдм Program рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рдХрдИ Functions рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВ, рддрдм Compiler Function Call рдХреЗ рд╕рдордп рджрд┐рдП рдЧрдП Arguments рдХреА рд╕рдВрдЦреНрдпрд╛, Data Type рддрдерд╛ рдЙрдирдХреЗ Order рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА Function рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЪрдпрди Compile Time рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ Static Binding рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

Function Call

тЖУ

Compiler Checks Parameters

тЖУ

Correct Overloaded Function

Function Overloading by Number of Parameters

рдпрджрд┐ рдПрдХ рд╣реА Function Name рдХреЗ рд╕рд╛рде Parameters рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ, рддреЛ Compiler рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ Functions рдорд╛рдирддрд╛ рд╣реИред

#include<iostream> using namespace std; class Demo { public: void show() { cout<<"No Parameter"; } void show(int a) { cout<<a; } void show(int a,int b) { cout<<a+b; } };

Function Overloading by Data Type

рдпрджрд┐ Parameters рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рд╣реЛ рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ Data Type рдЕрд▓рдЧ рд╣реЛ, рддрдм рднреА Function Overloading рд╕рдВрднрд╡ рд╣реЛрддреА рд╣реИред

class Demo { public: void display(int x) { cout<<"Integer"; } void display(float x) { cout<<"Float"; } void display(char x) { cout<<"Character"; } };

Function Overloading by Order of Parameters

рдпрджрд┐ Parameters рдХреА рд╕рдВрдЦреНрдпрд╛ рддрдерд╛ Data Types рд╕рдорд╛рди рд╣реЛрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ Order рдЕрд▓рдЧ рд╣реЛ, рддрдм рднреА Function Overloading рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

class Demo { public: void test(int,float) { cout<<"Function 1"; } void test(float,int) { cout<<"Function 2"; } };

Rules of Function Overloading

  • рд╕рднреА Functions рдХрд╛ Name рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • Parameter List рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
  • Parameters рдХреА рд╕рдВрдЦреНрдпрд╛, Data Type рдпрд╛ рдЙрдирдХрд╛ Order рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдХреЗрд╡рд▓ Return Type рдмрджрд▓рдиреЗ рд╕реЗ Function Overloading рдирд╣реАрдВ рд╣реЛрддреАред
  • Compiler Compile Time рдкрд░ Function рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред
  • Function Signature рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
  • Compile Time Polymorphism рдХрд╛ рдпрд╣ рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдг рд╣реИред
  • Ambiguous Function Calls рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред

Invalid Function Overloading

рдХреЗрд╡рд▓ Return Type рдмрджрд▓рдиреЗ рдкрд░ Compiler рджреЛрдиреЛрдВ Functions рдХреЛ рдЕрд▓рдЧ рдирд╣реАрдВ рдорд╛рдирддрд╛ред рдЗрд╕рд▓рд┐рдП рдпрд╣ Function Overloading рдХрд╛ рд╕рд╣реА рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИред

int add(int a,int b); float add(int a,int b);

рдЙрдкрд░реЛрдХреНрдд Declaration Compile Time Error рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ Functions рдХреА Parameter List рд╕рдорд╛рди рд╣реИред


Function Signature

Compiler Function рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП Function Signature рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред Function Signature рдореЗрдВ Function Name рддрдерд╛ рдЙрд╕рдХреА Parameter List рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИред Return Type Function Signature рдХрд╛ рднрд╛рдЧ рдирд╣реАрдВ рд╣реЛрддреАред

Included in Function Signature Not Included
Function Name Return Type
Number of Parameters Parameter Names
Data Types of Parameters Local Variables
Order of Parameters Function Body

Complete Program using Function Overloading

#include<iostream> using namespace std; class Calculator { public: int add(int a,int b) { return a+b; } float add(float a,float b) { return a+b; } int add(int a,int b,int c) { return a+b+c; } }; int main() { Calculator obj; cout<<obj.add(10,20)<<endl; cout<<obj.add(10.5f,20.5f)<<endl; cout<<obj.add(10,20,30); return 0; }

Example of Function Overloading by Order of Parameters

#include<iostream> using namespace std; class Demo { public: void display(int a,float b) { cout<<"Integer then Float"; } void display(float a,int b) { cout<<"Float then Integer"; } }; int main() { Demo obj; obj.display(10,20.5f); obj.display(30.5f,40); return 0; }

Real Life Applications of Function Overloading

Application Description
Calculator Software Different Data Types рдкрд░ Addition, Subtraction рддрдерд╛ Multiplication рдЬреИрд╕реЗ Operations рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Graphics Programming Shapes рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ Parameters рдХреЗ рд╕рд╛рде Draw рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Mathematical Libraries Different Numeric Types рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди Function рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
Game Development Objects рдХреЗ рд╡рд┐рднрд┐рдиреНрди States рдХреЗ рдЕрдиреБрд╕рд╛рд░ Functions Execute рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Scientific Software Different Precision Data Types рдкрд░ рд╕рдорд╛рди Logic рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

Advantages of Function Overloading

  • Code Reusability рдмрдврд╝рддреА рд╣реИред
  • Program рдЕрдзрд┐рдХ Readable рдмрдирддрд╛ рд╣реИред
  • Compile Time Polymorphism рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
  • Different Data Types рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ Function Names рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред
  • Maintenance рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддреА рд╣реИред
  • Professional Programming Standards рдХрд╛ рдкрд╛рд▓рди рд╣реЛрддрд╛ рд╣реИред
  • Code Duplication рдХрдо рд╣реЛрддреА рд╣реИред
  • Modular Programming рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рдорд┐рд▓рддрд╛ рд╣реИред

Limitations of Function Overloading

  • Ambiguous Function Calls Compile Time Error рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреА рд╣реИрдВред
  • рдХреЗрд╡рд▓ Return Type рдмрджрд▓рдХрд░ Overloading рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреАред
  • рдмрд╣реБрдд рдЕрдзрд┐рдХ Overloaded Functions рд╣реЛрдиреЗ рдкрд░ Code рд╕рдордЭрдирд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • рдЧрд▓рдд Parameter Selection рд╕реЗ Unexpected Results рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
  • Complex Programs рдореЗрдВ Debugging рдХрдард┐рди рд╣реЛ рд╕рдХрддреА рд╣реИред

Difference between Function Overloading and Function Overriding

Function Overloading Function Overriding
Compile Time Polymorphism. Runtime Polymorphism.
Same Class рдореЗрдВ рд╣реЛрддреА рд╣реИред Base рдФрд░ Derived Class рдХреЗ рдмреАрдЪ рд╣реЛрддреА рд╣реИред
Parameter List рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИред Parameter List рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд╕рдорд╛рди рд╣реЛрддреА рд╣реИред
Inheritance рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред Inheritance рдЖрд╡рд╢реНрдпрдХ рд╣реИред
Compile Time рдкрд░ Resolve рд╣реЛрддреА рд╣реИред Runtime рдкрд░ Resolve рд╣реЛрддреА рд╣реИред

Viva Questions

  1. What is Function Overloading?
  2. Why is Function Overloading used?
  3. Explain Compile Time Polymorphism.
  4. Can Return Type alone overload a Function?
  5. What is Function Signature?
  6. Explain Function Overloading by Number of Parameters.
  7. Explain Function Overloading by Data Type.
  8. Explain Function Overloading by Order of Parameters.
  9. Differentiate between Function Overloading and Function Overriding.
  10. State the advantages of Function Overloading.

Exam Oriented Important Questions

  1. Define Function Overloading with suitable example.
  2. Explain the need and features of Function Overloading.
  3. Write a C++ Program demonstrating Function Overloading.
  4. Explain Function Signature.
  5. Why is Return Type alone insufficient for Function Overloading?
  6. Explain Function Overloading by Number, Type and Order of Parameters.
  7. Discuss the advantages and limitations of Function Overloading.
  8. Differentiate between Function Overloading and Function Overriding.
  9. Explain Compile Time Polymorphism.
  10. Write short notes on Function Overloading.

Conclusion

Function Overloading C++ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг Compile Time Polymorphism Feature рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╣реА Function Name рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди Parameter Lists рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Program рдЕрдзрд┐рдХ Readable, Reusable рдПрд╡рдВ Maintainable рдмрдирддрд╛ рд╣реИред Function Overloading рдХрд╛ рдЙрдкрдпреЛрдЧ Mathematical Operations, Graphics Programming, Scientific Applications рддрдерд╛ Professional Software Development рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RGPV B.Tech рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ Topic Theory, Practical, Viva рддрдерд╛ University Examination рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

Related Articles

Arrays in C++ Notes | One Dimensional & Two Dimensional Arrays with Programs | Basic Computer Engineering | RGPV BTech First Year

Arrays ...

Read More тЖТ

Control Statements in C++ Notes | Decision Making & Looping Statements | Basic Computer Engineering | RGPV BTech First Year

Control...

Read More тЖТ

Expressions in C++ Notes | Types of Expressions, Evaluation & Expression Statements | Basic Computer Engineering | RGPV BTech First Year

Express...

Read More тЖТ

Operators in C++ Notes | Arithmetic, Relational, Logical, Assignment, Bitwise Operators | Basic Computer Engineering | RGPV BTech First Year

Operato...

Read More тЖТ

Program Structure in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Program...

Read More тЖТ