SlideShare uma empresa Scribd logo
1 de 34
Operator Overloading
Customised behaviour of operators
Unit - III
Unit Introduction
This unit covers operator overloading
Unit Objectives
After covering this unit you will understand…
 Operator overloading
 Different types of operator and their
overloading
 Operators that cannot be overloaded
 Inheritance and overloading
 Automatic type conversion
4
Introduction
 Operator overloading
 Enabling C++’s operators to work with class
objects
 Using traditional operators with user-defined
objects
 Requires great care; when overloading is misused,
program difficult to understand
 Examples of already overloaded operators
 Operator << is both the stream-insertion operator and
the bitwise left-shift operator
 + and -, perform arithmetic on multiple types
 Compiler generates the appropriate code based on
the manner in which the operator is used
5
 Overloading an operator
 Write function definition as normal
 Function name is keyword operator followed by
the symbol for the operator being overloaded
 operator+ used to overload the addition
operator (+)
 Using operators
 To use an operator on a class object it must be
overloaded unless the assignment operator(=)or
the address operator(&)
 Assignment operator by default performs memberwise
assignment
 Address operator (&) by default returns the address of an
object
6
Restrictions on Operator Overloading
 ++ operators that can be overloaded
 C++ Operators that cannot be overloaded
Operators that cannot be overloaded
. .* :: ?: sizeof
COperators that can be overloaded
+ - * / % ^ & |
~ ! = < > += -= *=
/= %= ^= &= |= << >> >>=
<<= == != <= >= && || ++
-- ->* , -> [] () new delete
new[] delete[]
7
Restrictions on Operator Overloading
 Overloading restrictions
 Precedence of an operator cannot be changed
 Associativity of an operator cannot be changed
 Arity (number of operands) cannot be changed
 Unary operators remain unary, and binary operators
remain binary
 Operators &, *, + and - each have unary and binary
versions
 Unary and binary versions can be overloaded separately
 No new operators can be created
 Use only existing operators
 No overloading operators for built-in types
 Cannot change how two integers are added
 Produces a syntax error
Operator Functions as Class
Members vs. as friend Functions Member vs non-member
 In general, operator functions can be member or non-member
functions
 When overloading ( ), [ ], -> or any of the assignment
operators, must use a member function
 Operator functions as member functions
 Leftmost operand must be an object (or reference to an object)
of the class
 If left operand of a different type, operator function must be
a non-member function
 Operator functions as non-member functions
 Must be friends if needs to access private or protected
members
 Enable the operator to be commutative
8
9
Overloading Stream-Insertion and Stream-Extraction
Operators
 Overloaded << and >> operators
 Overloaded to perform input/output for user-
defined types
 Left operand of types ostream & and istream
&
 Must be a non-member function because left
operand is not an object of the class
 Must be a friend function to access private data
members
10
Overloading Unary Operators
 Overloading unary operators
 Can be overloaded with no arguments or one
argument
 Should usually be implemented as member functions
 Avoid friend functions and classes because they
violate the encapsulation of a class
 Example declaration as a member function:
class String {
public:
bool operator!() const;
...
};
11
Overloading Unary Operators
 Example declaration as a non-member function
class String {
friend bool operator!( const
String & )
...
}
12
Overloading Binary Operators
 Overloaded Binary operators
 Non-static member function, one argument
 Example:
class Complex {
public:
const Complex operator+ (
const Complex &);
...
};
13
Overloading Binary Operators
 Non-member function, two arguments
 Example:
class Complex {
friend Complex operator +(
const Complex &, const Complex &
);
...
};
Example: Operator Overloading
class OverloadingExample
{
private:
int m_LocalInt;
public:
OverloadingExample(int j) // default constructor
{
m_LocalInt = j;
}
int operator+ (int j) // overloaded + operator
{
return (m_LocalInt + j);
}
};
Example: Operator Overloading (contd.)
void main()
{
OverloadingExample object1(10);
cout << object1 + 10; // overloaded operator called
}
Types of Operator
 Unary operator
 Binary operator
Unary Operators
 Operators attached to a single operand (-a, +a, --
a, a--, ++a, a++)
Example: Unary Operators
class UnaryExample
{
private:
int m_LocalInt;
public:
UnaryExample(int j)
{
m_LocalInt = j;
}
int operator++ ()
{
return (m_LocalInt++);
}
};
Example: Unary Operators (contd.)
void main()
{
UnaryExample object1(10);
cout << object1++; // overloaded operator results in value
// 11
}
Unary Overloaded Operators -- Member Functions
 Invocation in Two Ways-- Object@(Direct) or Object.operator@()(As a
Function)
class number{
int n;
public:
number(int x = 0):n(x){};
number operator-(){return number (-n);}
};
main()
{
number a(1), b(2), c, d;
//Invocation of "-" Operator -- direct
d = -b; //d.n = -2
//Invocation of "-" Operator -- Function
c = a.operator-(); //c.n = -1
}
20
21
Binary Overloaded Operators -- Member Functions
 Invocation in Two Ways-- ObjectA@ ObjectB(direct) or
ObjectA.operator@(ObjectB)(As a Function)
class number{
int n;
public:
number(int x = 0):n(x){};
number operator+(number ip)
{return number (ip.n + n);}
};
main()
{
number a(1), b(2), c, d;
//Invocation of "+" Operator -- direct
d = a + b; //d.n = 3
//Invocation of "+" Operator -- Function
c = d.operator+(b); //c.n = d.n + b.n = 5
}
Binary Operators
 Operators attached to two operands (a-b, a+b,
a*b, a/b, a%b, a>b, a>=b, a<b, a<=b, a==b)
Example: Binary Operators
class BinaryExample
{
private:
int m_LocalInt;
public:
BinaryExample(int j)
{
m_LocalInt = j;
}
int operator+ (BinaryExample& rhsObj)
{
return (m_LocalInt + rhsObj.m_LocalInt);
}
};
Example: Binary Operators (contd.)
void main()
{
BinaryExample object1(10), object2(20);
cout << object1 + object2; // overloaded operator called
}
Non-Overloadable Operators
 Operators that can not be overloaded due to
safety reasons:
 Member Selection ‘.’operator
 Member dereference ‘.*’operator
 Exponential ‘**’operator
 User-defined operators
 Operator precedence rules
Operator Overloading and Inheritance
 An operator is overloaded in super class but
not overloaded in derived class is called non-
member operator in derived class
 In above, if operator is also overloaded in
derived class it is called member-operator
 = ( ) []–> –>* operators must be member
operators
 Other operators can be non-member
operators
Automatic Type Conversion
 Automatic type conversion by the C++
compiler from the type that doesn’t fit, to the
type it wants
 Two types of conversion:
 Constructor conversion
 Operator conversion
Constructor Conversion
 Constructor having a single argument of another
type, results in automatic type conversion by the
compiler
 Prevention of constructor type conversion by
use of explicit keyword
Example: Constructor Conversion
class One
{
public:
One() {}
};
class Two
{
public:
Two(const One&) {}
};
void f(Two) {}
void main()
{
One one;
f(one); // Wants a Two, has a One
}
Operator Conversion
 Create a member function that takes the current
type
 Converts it to the desired type using the
operator keyword followed by the type you
want to convert to
 Return type is the name of the operator
overloaded
 Reflexivity - global overloading instead of
member overloading; for code saving
Example: Operator Conversion
class Three
{
int m_Data;
public:
Three(int ii = 0, int = 0) : m_Data(ii) {}
};
class Four
{
int m_Data;
public:
Four(int x) : m_Data(x) {}
operator Three() const
{
return Three(m_Data);
}
};
void g(Three) {}
Example: Operator Conversion (contd.)
void main()
{
Four four(1);
g(four);
g(1); // Calls Three(1,0)
}
Type Conversion Pitfalls
 Compiler performs automatic type conversion
independently, therefore it may have the
following pitfalls:
 Ambiguity with two classes of same type
 Automatic conversion to more than one type - fan-
out
 Adds hidden activities (copy-constructor etc)
Unit Summary
In this unit you have covered …
 Operator overloading
 Different types of operator
 Operators that cannot be overloaded
 Inheritance and overloading
 Automatic type conversion

Mais conteúdo relacionado

Mais procurados

08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.ppt08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.pptTareq Hasan
 
C++ overloading
C++ overloadingC++ overloading
C++ overloadingsanya6900
 
Operator overloading and type conversion in cpp
Operator overloading and type conversion in cppOperator overloading and type conversion in cpp
Operator overloading and type conversion in cpprajshreemuthiah
 
Operator Overloading and Scope of Variable
Operator Overloading and Scope of VariableOperator Overloading and Scope of Variable
Operator Overloading and Scope of VariableMOHIT DADU
 
Operator overloading and type conversions
Operator overloading and type conversionsOperator overloading and type conversions
Operator overloading and type conversionsAmogh Kalyanshetti
 
Bca 2nd sem u-4 operator overloading
Bca 2nd sem u-4 operator overloadingBca 2nd sem u-4 operator overloading
Bca 2nd sem u-4 operator overloadingRai University
 
Presentation on overloading
Presentation on overloading Presentation on overloading
Presentation on overloading Charndeep Sekhon
 
Operator Overloading
Operator OverloadingOperator Overloading
Operator OverloadingNilesh Dalvi
 
operator overloading & type conversion in cpp over view || c++
operator overloading & type conversion in cpp over view || c++operator overloading & type conversion in cpp over view || c++
operator overloading & type conversion in cpp over view || c++gourav kottawar
 
Lec 28 - operator overloading
Lec 28 - operator overloadingLec 28 - operator overloading
Lec 28 - operator overloadingPrincess Sam
 
Operator overloading
Operator overloadingOperator overloading
Operator overloadingfarhan amjad
 
#OOP_D_ITS - 5th - C++ Oop Operator Overloading
#OOP_D_ITS - 5th - C++ Oop Operator Overloading#OOP_D_ITS - 5th - C++ Oop Operator Overloading
#OOP_D_ITS - 5th - C++ Oop Operator OverloadingHadziq Fabroyir
 
C cpluplus 2
C cpluplus 2C cpluplus 2
C cpluplus 2sanya6900
 

Mais procurados (20)

operator overloading in C++
operator overloading in C++operator overloading in C++
operator overloading in C++
 
08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.ppt08 c++ Operator Overloading.ppt
08 c++ Operator Overloading.ppt
 
C++ overloading
C++ overloadingC++ overloading
C++ overloading
 
Operator overloading
Operator overloadingOperator overloading
Operator overloading
 
Operator overloading and type conversion in cpp
Operator overloading and type conversion in cppOperator overloading and type conversion in cpp
Operator overloading and type conversion in cpp
 
Operator Overloading and Scope of Variable
Operator Overloading and Scope of VariableOperator Overloading and Scope of Variable
Operator Overloading and Scope of Variable
 
14 operator overloading
14 operator overloading14 operator overloading
14 operator overloading
 
Operator overloading and type conversions
Operator overloading and type conversionsOperator overloading and type conversions
Operator overloading and type conversions
 
Bca 2nd sem u-4 operator overloading
Bca 2nd sem u-4 operator overloadingBca 2nd sem u-4 operator overloading
Bca 2nd sem u-4 operator overloading
 
Presentation on overloading
Presentation on overloading Presentation on overloading
Presentation on overloading
 
Operator Overloading
Operator OverloadingOperator Overloading
Operator Overloading
 
operator overloading & type conversion in cpp over view || c++
operator overloading & type conversion in cpp over view || c++operator overloading & type conversion in cpp over view || c++
operator overloading & type conversion in cpp over view || c++
 
operator overloading
operator overloadingoperator overloading
operator overloading
 
c++
c++c++
c++
 
Lec 28 - operator overloading
Lec 28 - operator overloadingLec 28 - operator overloading
Lec 28 - operator overloading
 
Unary operator overloading
Unary operator overloadingUnary operator overloading
Unary operator overloading
 
Operator overloading
Operator overloadingOperator overloading
Operator overloading
 
#OOP_D_ITS - 5th - C++ Oop Operator Overloading
#OOP_D_ITS - 5th - C++ Oop Operator Overloading#OOP_D_ITS - 5th - C++ Oop Operator Overloading
#OOP_D_ITS - 5th - C++ Oop Operator Overloading
 
C cpluplus 2
C cpluplus 2C cpluplus 2
C cpluplus 2
 
Oops
OopsOops
Oops
 

Semelhante a Operator overloaing

Semelhante a Operator overloaing (20)

Ch-4-Operator Overloading.pdf
Ch-4-Operator Overloading.pdfCh-4-Operator Overloading.pdf
Ch-4-Operator Overloading.pdf
 
OOPS-Seminar.pdf
OOPS-Seminar.pdfOOPS-Seminar.pdf
OOPS-Seminar.pdf
 
Operator Overloading
Operator OverloadingOperator Overloading
Operator Overloading
 
Cpp (C++)
Cpp (C++)Cpp (C++)
Cpp (C++)
 
NIKUL SURANI
NIKUL SURANINIKUL SURANI
NIKUL SURANI
 
Operator_Overloaing_Type_Conversion_OOPC(C++)
Operator_Overloaing_Type_Conversion_OOPC(C++)Operator_Overloaing_Type_Conversion_OOPC(C++)
Operator_Overloaing_Type_Conversion_OOPC(C++)
 
Operator overloading (binary)
Operator overloading (binary)Operator overloading (binary)
Operator overloading (binary)
 
Object Oriented Programming using C++ - Part 3
Object Oriented Programming using C++ - Part 3Object Oriented Programming using C++ - Part 3
Object Oriented Programming using C++ - Part 3
 
Operator Overloading in C++
Operator Overloading in C++Operator Overloading in C++
Operator Overloading in C++
 
3d7b7 session4 c++
3d7b7 session4 c++3d7b7 session4 c++
3d7b7 session4 c++
 
OOP_UnitIII.pdf
OOP_UnitIII.pdfOOP_UnitIII.pdf
OOP_UnitIII.pdf
 
Overloading
OverloadingOverloading
Overloading
 
08 c-operator-overloadingppt2563
08 c-operator-overloadingppt256308 c-operator-overloadingppt2563
08 c-operator-overloadingppt2563
 
Mca 2nd sem u-4 operator overloading
Mca 2nd  sem u-4 operator overloadingMca 2nd  sem u-4 operator overloading
Mca 2nd sem u-4 operator overloading
 
Synapse india complain sharing info on chapter 8 operator overloading
Synapse india complain sharing info on chapter 8   operator overloadingSynapse india complain sharing info on chapter 8   operator overloading
Synapse india complain sharing info on chapter 8 operator overloading
 
Operator overloading C++
Operator overloading C++Operator overloading C++
Operator overloading C++
 
Unary operator overloading
Unary operator overloadingUnary operator overloading
Unary operator overloading
 
Operator overloading
Operator overloadingOperator overloading
Operator overloading
 
Unit ii
Unit iiUnit ii
Unit ii
 
Operator overloading in C++
Operator  overloading in C++Operator  overloading in C++
Operator overloading in C++
 

Mais de zindadili

Exception handling
Exception handlingException handling
Exception handlingzindadili
 
Exception handling
Exception handlingException handling
Exception handlingzindadili
 
Virtual function
Virtual functionVirtual function
Virtual functionzindadili
 
Operator overloading2
Operator overloading2Operator overloading2
Operator overloading2zindadili
 
Polymorphism
PolymorphismPolymorphism
Polymorphismzindadili
 
Function overloading
Function overloadingFunction overloading
Function overloadingzindadili
 
Hierarchical inheritance
Hierarchical inheritanceHierarchical inheritance
Hierarchical inheritancezindadili
 
Hybrid inheritance
Hybrid inheritanceHybrid inheritance
Hybrid inheritancezindadili
 
Multiple inheritance
Multiple inheritanceMultiple inheritance
Multiple inheritancezindadili
 
Abstraction1
Abstraction1Abstraction1
Abstraction1zindadili
 
Access specifier
Access specifierAccess specifier
Access specifierzindadili
 
Friend function
Friend functionFriend function
Friend functionzindadili
 

Mais de zindadili (20)

Namespaces
NamespacesNamespaces
Namespaces
 
Namespace1
Namespace1Namespace1
Namespace1
 
Exception handling
Exception handlingException handling
Exception handling
 
Exception handling
Exception handlingException handling
Exception handling
 
Templates2
Templates2Templates2
Templates2
 
Templates1
Templates1Templates1
Templates1
 
Virtual function
Virtual functionVirtual function
Virtual function
 
Operator overloading2
Operator overloading2Operator overloading2
Operator overloading2
 
Polymorphism
PolymorphismPolymorphism
Polymorphism
 
Function overloading
Function overloadingFunction overloading
Function overloading
 
Aggregation
AggregationAggregation
Aggregation
 
Hierarchical inheritance
Hierarchical inheritanceHierarchical inheritance
Hierarchical inheritance
 
Hybrid inheritance
Hybrid inheritanceHybrid inheritance
Hybrid inheritance
 
Multiple inheritance
Multiple inheritanceMultiple inheritance
Multiple inheritance
 
Abstraction1
Abstraction1Abstraction1
Abstraction1
 
Abstraction
AbstractionAbstraction
Abstraction
 
Access specifier
Access specifierAccess specifier
Access specifier
 
Inheritance
InheritanceInheritance
Inheritance
 
Friend function
Friend functionFriend function
Friend function
 
Enum
EnumEnum
Enum
 

Último

Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxVishalSingh1417
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxJisc
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxheathfieldcps1
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...pradhanghanshyam7136
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxAmanpreet Kaur
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsKarakKing
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfPoh-Sun Goh
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and ModificationsMJDuyan
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfSherif Taha
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfNirmal Dwivedi
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Association for Project Management
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSCeline George
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptxMaritesTamaniVerdade
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.MaryamAhmad92
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseAnaAcapella
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxVishalSingh1417
 

Último (20)

Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 

Operator overloaing

  • 2. Unit Introduction This unit covers operator overloading
  • 3. Unit Objectives After covering this unit you will understand…  Operator overloading  Different types of operator and their overloading  Operators that cannot be overloaded  Inheritance and overloading  Automatic type conversion
  • 4. 4 Introduction  Operator overloading  Enabling C++’s operators to work with class objects  Using traditional operators with user-defined objects  Requires great care; when overloading is misused, program difficult to understand  Examples of already overloaded operators  Operator << is both the stream-insertion operator and the bitwise left-shift operator  + and -, perform arithmetic on multiple types  Compiler generates the appropriate code based on the manner in which the operator is used
  • 5. 5  Overloading an operator  Write function definition as normal  Function name is keyword operator followed by the symbol for the operator being overloaded  operator+ used to overload the addition operator (+)  Using operators  To use an operator on a class object it must be overloaded unless the assignment operator(=)or the address operator(&)  Assignment operator by default performs memberwise assignment  Address operator (&) by default returns the address of an object
  • 6. 6 Restrictions on Operator Overloading  ++ operators that can be overloaded  C++ Operators that cannot be overloaded Operators that cannot be overloaded . .* :: ?: sizeof COperators that can be overloaded + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |= << >> >>= <<= == != <= >= && || ++ -- ->* , -> [] () new delete new[] delete[]
  • 7. 7 Restrictions on Operator Overloading  Overloading restrictions  Precedence of an operator cannot be changed  Associativity of an operator cannot be changed  Arity (number of operands) cannot be changed  Unary operators remain unary, and binary operators remain binary  Operators &, *, + and - each have unary and binary versions  Unary and binary versions can be overloaded separately  No new operators can be created  Use only existing operators  No overloading operators for built-in types  Cannot change how two integers are added  Produces a syntax error
  • 8. Operator Functions as Class Members vs. as friend Functions Member vs non-member  In general, operator functions can be member or non-member functions  When overloading ( ), [ ], -> or any of the assignment operators, must use a member function  Operator functions as member functions  Leftmost operand must be an object (or reference to an object) of the class  If left operand of a different type, operator function must be a non-member function  Operator functions as non-member functions  Must be friends if needs to access private or protected members  Enable the operator to be commutative 8
  • 9. 9 Overloading Stream-Insertion and Stream-Extraction Operators  Overloaded << and >> operators  Overloaded to perform input/output for user- defined types  Left operand of types ostream & and istream &  Must be a non-member function because left operand is not an object of the class  Must be a friend function to access private data members
  • 10. 10 Overloading Unary Operators  Overloading unary operators  Can be overloaded with no arguments or one argument  Should usually be implemented as member functions  Avoid friend functions and classes because they violate the encapsulation of a class  Example declaration as a member function: class String { public: bool operator!() const; ... };
  • 11. 11 Overloading Unary Operators  Example declaration as a non-member function class String { friend bool operator!( const String & ) ... }
  • 12. 12 Overloading Binary Operators  Overloaded Binary operators  Non-static member function, one argument  Example: class Complex { public: const Complex operator+ ( const Complex &); ... };
  • 13. 13 Overloading Binary Operators  Non-member function, two arguments  Example: class Complex { friend Complex operator +( const Complex &, const Complex & ); ... };
  • 14. Example: Operator Overloading class OverloadingExample { private: int m_LocalInt; public: OverloadingExample(int j) // default constructor { m_LocalInt = j; } int operator+ (int j) // overloaded + operator { return (m_LocalInt + j); } };
  • 15. Example: Operator Overloading (contd.) void main() { OverloadingExample object1(10); cout << object1 + 10; // overloaded operator called }
  • 16. Types of Operator  Unary operator  Binary operator
  • 17. Unary Operators  Operators attached to a single operand (-a, +a, -- a, a--, ++a, a++)
  • 18. Example: Unary Operators class UnaryExample { private: int m_LocalInt; public: UnaryExample(int j) { m_LocalInt = j; } int operator++ () { return (m_LocalInt++); } };
  • 19. Example: Unary Operators (contd.) void main() { UnaryExample object1(10); cout << object1++; // overloaded operator results in value // 11 }
  • 20. Unary Overloaded Operators -- Member Functions  Invocation in Two Ways-- Object@(Direct) or Object.operator@()(As a Function) class number{ int n; public: number(int x = 0):n(x){}; number operator-(){return number (-n);} }; main() { number a(1), b(2), c, d; //Invocation of "-" Operator -- direct d = -b; //d.n = -2 //Invocation of "-" Operator -- Function c = a.operator-(); //c.n = -1 } 20
  • 21. 21 Binary Overloaded Operators -- Member Functions  Invocation in Two Ways-- ObjectA@ ObjectB(direct) or ObjectA.operator@(ObjectB)(As a Function) class number{ int n; public: number(int x = 0):n(x){}; number operator+(number ip) {return number (ip.n + n);} }; main() { number a(1), b(2), c, d; //Invocation of "+" Operator -- direct d = a + b; //d.n = 3 //Invocation of "+" Operator -- Function c = d.operator+(b); //c.n = d.n + b.n = 5 }
  • 22. Binary Operators  Operators attached to two operands (a-b, a+b, a*b, a/b, a%b, a>b, a>=b, a<b, a<=b, a==b)
  • 23. Example: Binary Operators class BinaryExample { private: int m_LocalInt; public: BinaryExample(int j) { m_LocalInt = j; } int operator+ (BinaryExample& rhsObj) { return (m_LocalInt + rhsObj.m_LocalInt); } };
  • 24. Example: Binary Operators (contd.) void main() { BinaryExample object1(10), object2(20); cout << object1 + object2; // overloaded operator called }
  • 25. Non-Overloadable Operators  Operators that can not be overloaded due to safety reasons:  Member Selection ‘.’operator  Member dereference ‘.*’operator  Exponential ‘**’operator  User-defined operators  Operator precedence rules
  • 26. Operator Overloading and Inheritance  An operator is overloaded in super class but not overloaded in derived class is called non- member operator in derived class  In above, if operator is also overloaded in derived class it is called member-operator  = ( ) []–> –>* operators must be member operators  Other operators can be non-member operators
  • 27. Automatic Type Conversion  Automatic type conversion by the C++ compiler from the type that doesn’t fit, to the type it wants  Two types of conversion:  Constructor conversion  Operator conversion
  • 28. Constructor Conversion  Constructor having a single argument of another type, results in automatic type conversion by the compiler  Prevention of constructor type conversion by use of explicit keyword
  • 29. Example: Constructor Conversion class One { public: One() {} }; class Two { public: Two(const One&) {} }; void f(Two) {} void main() { One one; f(one); // Wants a Two, has a One }
  • 30. Operator Conversion  Create a member function that takes the current type  Converts it to the desired type using the operator keyword followed by the type you want to convert to  Return type is the name of the operator overloaded  Reflexivity - global overloading instead of member overloading; for code saving
  • 31. Example: Operator Conversion class Three { int m_Data; public: Three(int ii = 0, int = 0) : m_Data(ii) {} }; class Four { int m_Data; public: Four(int x) : m_Data(x) {} operator Three() const { return Three(m_Data); } }; void g(Three) {}
  • 32. Example: Operator Conversion (contd.) void main() { Four four(1); g(four); g(1); // Calls Three(1,0) }
  • 33. Type Conversion Pitfalls  Compiler performs automatic type conversion independently, therefore it may have the following pitfalls:  Ambiguity with two classes of same type  Automatic conversion to more than one type - fan- out  Adds hidden activities (copy-constructor etc)
  • 34. Unit Summary In this unit you have covered …  Operator overloading  Different types of operator  Operators that cannot be overloaded  Inheritance and overloading  Automatic type conversion