function overloading(c++)

21
FUNCTION OVERLOADING 1 Ritika sharma

Upload: ritika-sharma

Post on 14-Feb-2017

193 views

Category:

Education


13 download

TRANSCRIPT

FUNCTIONOVERLOADING

1 Ritika sharma

PolymorphismThe word polymorphism is derived from

Greek word Poly which means many and morphos which means forms.

Polymorphism can be defined as the ability to use the same name for two or more related but technically different tasks.

Eg-woman plays role of daughter,sister,wife,mother etc.

2 Ritika sharma

Overloading in C++What is overloading

– Overloading means assigning multiplemeanings to a function name or operatorsymbol– It allows multiple definitions of a function with the same name, but different signatures.

C++ supports– Function overloading– Operator overloading

3 Ritika sharma

Why is Overloading Useful? Function overloading allows functions that

conceptually perform the same task on objects of different types to be given the

same name.

Operator overloading provides a convenient notation for manipulating user-defined

objects with conventional operators.

4 Ritika sharma

Function Overloading Is the process of using the same name for

two or more functionsRequires each redefinition of a function to

use a different function signature that is: different types of parameters,or sequence of parameters, or number of parameters

Is used so that a programmer does not have to remember multiple function names

5 Ritika sharma

Function OverloadingTwo or more functions can have the same

name but different parameters Example:

int max(int a, int b) {

if (a>= b)return a;

elsereturn b;

}

float max(float a, float b) {

if (a>= b)return a;

elsereturn b;

}

6 Ritika sharma

Overloading Function Call Resolution

Overloaded function call resolution is done bycompiler during compilation– The function signature determines which definition is used

a Function signature consists of:– Parameter types and number of parameters supplied to a function

a Function return type is not part of function signatureand is not used in function call resolution

7 Ritika sharma

void sum(int,int);

void sum(double,double);

void sum(char,char);

void main()

{

int a=10,b=20 ;

double c=7.52,d=8.14;

char e=‘a’ , f=‘b’ ;

sum(a,b); //calls sum(int x,int y)

sum(c,d); //calls sum (double x,double y)

sum(e,f); // calls sum(char x,char y)

}

void sum(int x,int y)

{

vout<<“\n sum of integers are”<<x+y;

}

void sum(double x,double y)

{

cout<<“\n sum of two floating no are”<<x+y;

}

void sum(char x,char y)

{

cout<<“\n sum of characters are”<<x+y;

}

8 Ritika sharma

Output:Sum of integers 30sum of two floating no are 15.66sum of characters are 195

9 Ritika sharma

Void area(int)

Void area(int,int);

Void area(int,int,int);

Int main()

{

Int side=10,le=5,br=6,a=4,b=5,c=6;

Area(side);

Area(le,br);

Area(a,b,c);

Getch();

Return 0;

}

Void area(int x)

{ cout<<“area is”<<x*x;

}

Void area(int x,int y)

{cout<<“area of rectang;e”=<<x*y;

}

Void area(int x,int y,int z)

{cout<<“volume is”<<x*y*z;

}10 Ritika sharma

Function Selection Involves following Steps.

Compiler first tries to find the Exact match in which the type of argument are the same,and uses that func.

If an exact match is not found,the compiler user the integral promotions to the actual argument such as,char to int, float to double.

When either of them fails ,build in conversions are used(implicit conversion) to the actual arguments and then uses the function whose match is unique.but if there are multiple matches,then compiler will generate an error message.

11 Ritika sharma

For ex: long square(long n)long square(double x)Now a func. call such as square(10)

will cause an error because int argument can be converted into long also and double also.so it will show ambiguity.

User defined conversion are followed if all the conversion are failed.

12 Ritika sharma

SCOPE RULES

13 Ritika sharma

Scope

The scope of a variable is the portion of a program where the variable has meaning (where it exists).

A global variable has global (unlimited) scope.

A local variable’s scope is restricted to the function that declares the variable.

A block variable’s scope is restricted to the block in which the variable is declared.

14 Ritika sharma

Understanding ScopeSome variables can be accessed

throughout an entire program, while others can be accessed only in a limited part of the program

The scope of a variable defines where it can be accessed in a program

To adequately understand scope, you must be able to distinguish between local and global variables

15 Ritika sharma

Local variablesParameters and variables declared inside

the definition of a function are local.They only exist inside the function body.Once the function returns, the variables no

longer exist!That’s fine! We don’t need them anymore!

16 Ritika sharma

Block VariablesYou can also declare variables that exist

only within the body of a compound statement (a block):

{int foo;

……

}

17 Ritika sharma

Global variablesYou can declare variables outside of any

function definition – these variables are global variables.

Any function can access/change global variables.

Example: flag that indicates whether debugging information should be printed.

18 Ritika sharma

Distinguishing Between Local and Global Variables

Celebrity names are global because they are known to people everywhere and always refer to those same celebrities

Global variables are those that are known to all functions in a program

Some named objects in your life are localYou might have a local co-worker whose name

takes precedence over, or overrides, a global one

19 Ritika sharma

A note about Global vs. File scope

A variable declared outside of a function is available everywhere, but only the functions that follow it in the file know about it.

The book talks about file scope, I’m calling it global scope.

20 Ritika sharma

Block Scopeint main(void) {int y;

{int a = y;cout << a << endl;

}cout << a << endl;

}Erro

r – a doesn

’t exis

t outsid

e

the block!

21 Ritika sharma