0% found this document useful (0 votes)
64 views

This Pointer: Operator Overloading

This document discusses the this pointer, operator overloading, and member operator functions in C++. The this pointer is passed implicitly as a pointer to the invoking object when a member function is called. Operator overloading allows operators to be redefined to perform special operations on user-defined classes. Member operator functions take the form "ret-type class-name::operator#(arg-list)" and are defined using the operator keyword. An example overloads the + operator for a loc class that stores longitude and latitude to return a new loc object with the summed coordinates.

Uploaded by

shashank gupta
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views

This Pointer: Operator Overloading

This document discusses the this pointer, operator overloading, and member operator functions in C++. The this pointer is passed implicitly as a pointer to the invoking object when a member function is called. Operator overloading allows operators to be redefined to perform special operations on user-defined classes. Member operator functions take the form "ret-type class-name::operator#(arg-list)" and are defined using the operator keyword. An example overloads the + operator for a loc class that stores longitude and latitude to return a new loc object with the summed coordinates.

Uploaded by

shashank gupta
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

This Pointer

When a member function is called, it is automatically passed an implicit argument


that is a pointer to the invoking object (that is, the object on which the function is
called). This pointer is called this.

Operator overloading
Operator overloading is closely related to function overloading. In C++, you can
overload most operators so that they perform special operations relative to classes
that you create. For example, a class that maintains a stack might overload + to
perform a push operation and to perform a pop. When an operator is
overloaded, none of its original meanings are lost. After overloading the
appropriate operators, you can use objects in expressions in just the same way that
you use C++'s built-in data types. Operator overloading is done by creating
operator functions. An operator function defines the operations that the overloaded
operator will perform relative to the class upon which it will work. An operator
function is created using the keyword operator. Operator functions can be either
members or nonmembers of a class. Nonmember operator functions are almost
always friend functions of the class, however. The way operator functions are
written differs between member and nonmember functions.

Member Operator Function


A member operator function takes this general form:
ret-type class-name::operator#(arg-list)
{
// operations
}
Often, operator functions return an object of the class they operate on, but ret-type
can be any valid type. The # is a placeholder. When you create an operator
function, substitute the operator for the #. For example, if you are overloading the /
operator, use operator/. When you are overloading a unary operator, arg-list will
be empty. When you are overloading binary operators, arg-list will contain one
parameter.

This program creates a class called loc, which stores longitude and latitude values.
It overloads the + operator relative to this class.
#include<iostream>
classloc{
intlongitude,latitude;
public:
loc(){}
loc(intlg,intlt)
{
longitude=lg;
latitude=lt;
}
voidshow()
{
cout<<longitude<<"";
cout<<latitude<<"\n";
}
locoperator+(locop2);
};
//Overload+forloc.
locloc::operator+(locop2)
{
loctemp;
temp.longitude=op2.longitude+longitude;
temp.latitude=op2.latitude+latitude;
returntemp;
}

voidmain()
{
locob1(10,20),ob2(5,30);
ob1.show();//displays1020
ob2.show();//displays530
ob1=ob1+ob2;
ob1.show();//displays1550
getch();
}

You might also like