Google
 

Wednesday, February 20, 2008

Introduction to Function Overloading in C++

Let us start this with a question!

All of you know that we cannot have two variables of the same name, but can we have two Functions having the same name.

The answer is YES, we can have two functions of the same name by a method known as function overloading and the functions having the same name are known as overloaded functions.

So, what’s the use of Function Overloading

Function overloading is one of the most powerful features of C++ programming language. It forms the basis of polymorphism (compile-time polymorphism).

Most of the time you’ll be overloading the constructor function of a class.

How function overloading is achieved

One thing that might be coming to your mind is, how will the compiler know when to call which function, if there are more than one function of the same name.

The answer is, you have to declare functions in such a way that they differ either in terms of the number of parameters or in terms of the type of parameters they take.

What that means is, nothing special needs to be done, you just need to declare two or more functions having the same name but either having different number of parameters or having parameters of different types.

Example 1: Overloading Functions that differ in terms of NUMBER OF PARAMETERS

  //Example Program in C++

#include

//FUNTION PROTOTYPES
int func(int i);
int func(int i, int j);

void main(void)
{
cout<
cout< }

int func(int i)
{
return i;
}

int func(int i, int j)
{
return i+j;
}

Example 2: Overloading Functions that differ in terms of TYPE OF PARAMETERS

  //Example Program in C++

#include

//FUNTION PROTOTYPES
int func(int i);
double func(double i);

void main(void)
{
cout<
cout< }

int func(int i)
{
return i;
}

double func(double i)
{
return i;
}

One more Question, is the program below, valid?

  //Example Program in C++

#include

//FUNTION PROTOTYPES
int func(int i);
double func(int i);

void main(void)
{
cout<
cout< }

int func(int i)
{
return i;
}

double func(int i)
{
return i;
}

No, because you can’t overload functions if they differ only in terms of the data type they return.

I Hope this article throws some light on function overloading!

Good-Bye for now

No comments: