Chapter: Object Oriented Programming and Data Structure : Data Abstraction & Overloading

Overloading

1. Function overloading in C++: 2. Operators overloading in C++:

Overloading:

 

1. Function overloading in C++:

 

You 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. You can not overload function declarations that differ only by return type.

 

Following is the example where same function print() is being used to print different data types:

 

#include<iostream> usingnamespacestd; classprintData

{

 

public: voidprint(inti){

cout<<"Printing int: "<<i<<endl;

}

 

voidprint(double f){ cout<<"Printing float: "<< f <<endl;

}

voidprint(char* c){

cout<<"Printing character: "<< c <<endl;

}

};

int main(void)

{

printDatapd;

 

//  Call print to print integer pd.print(5);

 

//  Call print to print float pd.print(500.263);

 

//  Call print to print character pd.print("Hello C++"); return0;

 

}

 

When the above code is compiled and executed, it produces the following result: Printingint:5

 

Printingfloat:500.263 Printing character:Hello C++

 

2. Operators overloading in C++:

 

You can redefine or overload most of the built-in operators available in C++. Thus a programmer can use operators with user-defined types as well.

 

Overloaded operators are functions with special names the keyword operator followed by the symbol for the operator being defined. Like any other function, an overloaded operator has a return type and a parameter list.

 

Boxoperator+(constBox&);

declares the addition operator that can be used to add two Box objects and returns final Box object. Most overloaded operators may be defined as ordinary non-member functions or as class member functions. In case we define above function as non-member function of a class then we would have to pass two arguments for each operand as follows:

 

Boxoperator+(constBox&,constBox&);

 

Following is the example to show the concept of operator over loading using a member function. Here an object is passed as an argument whose properties will be accessed using this object, the object which will call this operator can be accessed using this operator as explained below:

 

#include<iostream> usingnamespacestd; classBox

{

public: doublegetVolume(void)

{

return length * breadth * height;

 

}

voidsetLength(doublelen)

{

length=len;

}

voidsetBreadth(doublebre)

{

breadth=bre;

}

voidsetHeight(doublehei)

{

 

height=hei;

 

}

 

//  Overload + operator to add two Box objects. Boxoperator+(constBox& b)

{

Boxbox;

 

box.length=this->length +b.length; box.breadth=this->breadth +b.breadth; box.height=this->height +b.height; return box;

 

}

private:

 

double length;// Length of a box double breadth;// Breadth of a box double height;// Height of a box };

 

//  Main function for the program

int main()

{

 

BoxBox1;// Declare Box1 of type Box BoxBox2;// Declare Box2 of type Box BoxBox3;// Declare Box3 of type Box

double volume =0.0;// Store the volume of a box here

 

//  box 1 specification Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0);

 

box 2 specification Box2.setLength(12.0); Box2.setBreadth(13.0);

Box2.setHeight(10.0); // volume of box 1

volume=Box1.getVolume();

 

cout<<"Volume of Box1 : "<< volume <<endl; // volume of box 2 volume=Box2.getVolume();

 

cout<<"Volume of Box2 : "<< volume <<endl;

 

//  Add two object as follows: Box3=Box1+Box2;

//  volume of box 3

volume=Box3.getVolume();

 

cout<<"Volume of Box3 : "<< volume <<endl; return0;

 

}

 

When the above code is compiled and executed, it produces the following result: Volume of Box1:210

Volume of Box2:1560

Volume of Box3:5400

 


Study Material, Lecturing Notes, Assignment, Reference, Wiki description explanation, brief detail
Object Oriented Programming and Data Structure : Data Abstraction & Overloading : Overloading |


Privacy Policy, Terms and Conditions, DMCA Policy and Compliant

Copyright © 2018-2024 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.