Classes function overloading


Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Classes function overloading

  1. 1. OOPS DONE BY: Ankush Kumar
  2. 2. Function Overloading C++ permits the use of two function with the same name. However such functions essentially have different argument list.The difference can be in terms of number or type of arguments or both. The biggest advantage of overloading is that it helps us to perform same operations on different datatypes without having the need to use separate names for each version.This process of using two or more functions with the same name but differing in the signature is called function overloading.But overloading of functions with different return types are not allowed. In overloaded functions , the function call determines which function definition will be executed.
  3. 3. Function OverloadingExample:#include<iostream>using namespace std;int abslt(int );long abslt(long );float abslt(float );double abslt(double );int main(){ int intgr=-5; long lnt=34225; float flt=-5.56; double dbl=-45.6768; cout<<" absoulte value of "<<intgr<<" = "<<abslt(intgr)<<endl; cout<<" absoulte value of "<<lnt<<" = "<<abslt(lng)<<endl;
  4. 4. cout<<" absoulte value of "<<flt<<" = "<<abslt(flt)<<endl;cout<<" absoulte value of "<<dbl<<" = "<<abslt(dbl)<<endl;}int abslt(int num){if(num>=0)return num;else return (-num);}long abslt(long num){if(num>=0)return num;else return (-num);}float abslt(float num){if(num>=0)return num;else return (-num);}double abslt(double num)
  5. 5. if(num>=0)return num;else return (-num);}OUTPUTabsoulte value of -5 = 5absoulte value of 34225 = 34225absoulte value of -5.56 = 5.56absoulte value of -45.6768 = 45.6768The above function finds the absolute value of any number int, long, float ,double.The use of overloading may not have reduced the code complexity /size but hasdefinitely made it easier to understand and avoided the necessity of rememberingdifferent names for each version function which perform identically the same task.
  6. 6. Call by Value & Call by Reference In C ++ programming language, variables can be referred differently depending on the context. For example, if you are writing a program for a low memory system, you may want to avoid copying larger sized types such as structs and arrays when passing them to functions. On the other hand, with data types like integers, there is no point in passing by reference when a pointer to an integer is the same size in memory as an integer itself. Now, let us learn how variables can be passed in a C program.
  7. 7. Call By ValueWhen you use pass-by-value, the compiler copies the value of anargument in a calling function to a corresponding non-pointer or non-reference parameter in the called function definition. The parameter in thecalled function is initialized with the value of the passed argument. As longas the parameter has not been declared as constant, the value of theparameter can be changed, but the changes are only performed within thescope of the called function only; they have no effect on the value of theargument in the calling function.In the following example, main passes func two values: 5 and 7. Thefunction func receives copies of these values and accesses them by theidentifiers a and b. The function func changes the value of a. When controlpasses back to main, the actual values of x and y are not changed.
  8. 8. Sample Program#include <stdio.h>void func (int a, int b){ a += b; printf("In func, a = %d b = %dn", a, b);}int main(void){ int x = 5, y = 7; func(x, y); printf("In main, x = %d y = %dn", x, y); return 0;}The output of the program is:In func, a = 12 b = 7In main, x = 5 y = 7
  9. 9. Call By ReferenceThere are two instances where a variable is passed by reference:When you modify the value of the passed variable locally and also thevalue of the variable in the calling function as well.To avoid making a copy of the variable for efficiency reasons.Passing by by reference refers to a method of passing the address of anargument in the calling function to a corresponding parameter in thecalled function. In C, the corresponding parameter in the called function must bedeclared as a pointer type. In C++, the corresponding parameter can be declared as any referencetype, not just a pointer type.In this way, the value of the argument in the calling function can bemodified by the called function.
  10. 10. Sample ProgramThe following example shows how arguments are passed by reference. In C++,the reference parameters are initialized with the actual arguments when thefunction is called. In C, the pointer parameters are initialized with pointer valueswhen the function is called. #include <stdio.h> void swapnum(int &i, int &j) { int temp = i; i = j; j = temp; } int main(void) { int a = 10; int b = 20; swapnum(a, b); printf("A is %d and B is %dn", a, b); return 0; }
  11. 11. Call by Value vs Call by Reference The process of calling  The process of calling function by actually sending function using pointers to or passing the copies of pass the address of data. variables . At most one value at a time  Multiple values can be can be returned to the returned to calling function calling function with an and explicit return explicit return statement. statement is not required . Here formal parameters are  Here formal parameters are normal variable names that pointer variables that can can receive actual receive actual parameter or parameters/argument arguments as address of value’s copy. variables .
  12. 12. Calling a Function using a Pointer In C++ you call a function using a function pointer by explicitly dereferencing it using the * operator. Alternatively you may also just use the function pointers instead of the funtions name. In C++ the two operators .* resp. ->* are used together with an instance of a class in order to call one of their (non-static) member functions. If the call takes place within another member function you may use the this-pointer.
  13. 13. Calling a function using a pointerEXAMPLE:-main(){TMyClass instance1;int result3 = (instance1.*pt2Member)(12, a, b); // C++int result4 = (*this.*pt2Member)(12, a, b); // C++ if this-pointer can be usedTMyClass* instance2 = new TMyClass;int result4 = (instance2->*pt2Member)(12, a, b); // C++, instance2 is a pointerdelete instance2;return 0;}
  14. 14. Pass Object As An ArgumentLike any other data type,an object may be used as a function argument.This can be done in two ways: -> A copy of the entire object is passed to the function -> Only address of the object is transferred to the functionThe pass by referrence method is more efficientsince it requires to pass only the address of the object and not the entire object
  15. 15. Sample Program/*C++ PROGRAM TO PASS OBJECT AS AN ARGUMEMT. The program Adds thetwo heights given in feet and inches. */#include< iostream.h>#include< conio.h>class height{int feet,inches;public:void getht(int f,int i){feet=f;inches=i;}void putheight(){cout< < "nHeight is:"< < feet< < "feett"< < inches< < "inches"< < endl;}
  16. 16. void sum(height a,height b){height n;n.feet = a.feet + b.feet;n.inches = a.inches + b.inches;if(n.inches ==12){n.feet++;n.inches = n.inches -12;}cout< < endl< < "Height is "< < n.feet< < " feet and "< < n.inches< < endl;}};void main(){height h,d,a;clrscr();h.getht(6,5);a.getht(2,7);h.putheight();a.putheight();d.sum(h,a);getch();}