Object-Oriented Programming In C++: Overloading and Default Arguments

Content:

1. Function overloading in C++. 2. Default arguments in c++.

Function Overloading in C++:

We can have multiple definitions for the same function name in the same scope. The definition of the function must differ from each other by the types and/or the number of arguments in the argument list. We can not overload function declarations that differ only by return type. Example: We can define a function called display to print a integer number. but the number may double too, and we do not have to define a function with another name, we can overload this function as following:
  1.     void display (int i )
  2.     {
  3.       cout<<"integer "<<i<<endl;
  4.     }
  5.     void display (double i )
  6.     {
  7.       cout<<"double " <<i<<endl;
  8.     }
  9.     int main( )
  10.     {
  11.       display(7);
  12.       display(3.5);
  13.       return 0;
  14.     }
the output:
integer 7 double 3.5

Default Arguments in C++:

When the programmer write a function with arguments, may some of those arguments can have values ​which ​are known in advance. In this case we can write a function with default arguments. Using default arguments makes the calling of the function faster because there is no need to copy them. Example:
  1. void init (inta ,intb = 0) ;  // 2'nd argument = 0 by default
  2. init (3); init (2,4);
We must put the default arguments in the right side of others arguments: void incorrect(int a =3,int b,int c= 0) ; // error , b has no value If we write the default arguments in the prototype of a function, we can not rewrite this arguments with their values in the definition.
  1. void init (int a = 0) ; // declaration of init
  2. void init (int a = 0) {/* body */ } //definition of init ERROR
  1. void init (int a = 0) ;// declaration of init
  2. void init (int a ){ / * body * / } //OK
Full Example:
  1. #include <iostream>
  2. void init(int,int=3);
  3. void init(int a,int b)
  4. {
  5.     cout<<a <<","<<b;
  6. }
  7. void init(int=7,int); // overdefinition
  8. int main()
  9. {
  10.     init(2,1); // displays 2,1
  11.     init(4); // displays 4,3
  12.     init(); // displays 7,3
  13.     return 0;
  14. }
Tags

Add new comment