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
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2026 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.