***Welcome to ashrafedu.blogspot.com * * * This website is maintained by ASHRAF***

Monday, April 26, 2021

Function Overloading

Function overloading means two or more functions can have the same name but either the number of arguments or the data type of arguments has to be different. Return type has no role because function will return a value when it is called and at compile time compiler will not be able to determine which function to call.

When you call an overloaded function, the compiler determines the most appropriate definition to use by comparing the argument types you used to call the function or with the parameter types specified in the definitions. The process of selecting the most appropriate overloaded function or operator is called overload resolution.

There are two ways to overload the functions in C++:

1. Changing number of Arguments:

In this type of function overloading we define two or more functions with same names but different number of parameters of the same type.

2. By having different types of argument:

In this type of function overloading we define two or more functions with same names and same number of arguments but the type of arguments is different.

Matching Function calls with over loaded functions

When an overload function is called, one of the following cases occurs:

Case 1: A direct match is found, and there is no confusion in calling the appropriate overloaded function.

Case 2: If a match is not found, a linker error will generate. However, if a direct match is not found, then, the compiler will try to find a match through the type conversion or type casting.

Case 3: If an ambiguous match found, that is when the arguments match more than one  overloaded function, a compiler error will be generated.

For example:

#include<iostream.h>

void print(int n)

{

Cout<<”n= “<<n<<”\n”;

}

Void print(char c)

{

Cout<<”ch= “<<ch<<”\n”;

}

Void print(float f);

{

Cout<<”f= “<<f<<”\n”;

}

Void main()

{

Print(8);

Print(‘D’);

Print(25.4);

}

When you execute this code, you will get a compile time error as there are two function declarations are valid for print(8); The function call can invoke either int or float version because all standard type conversions are treated equal. Therefore, 8 can be treated as an int as well as a float.


No comments:

Post a Comment