samaduske
Codebase Navigator
2
MONTHS
2 2 MONTHS OF SERVICE
LEVEL 1
300 XP
1. Introduction.
2. Basic Principles in Operator Overloading.
Introduction:
Calling function in some classes may be annoying, especially mathematical classes, for example:
In C++ the overloading principle applies not only to functions, but to operators too.
- Operators can be extended to work not just with built-in types but also classes.
- Operator is used on objects of that class.
- Operator Overloading makes it very easy to write code that feels natural.
- It requires special care, can be abused to make code unreadable.
Basic Principles in Operator Overloading:
When using operator overloading, you have to:
- use it to increase readability of your program.
- avoid exaggeration in use.
To use operator overloading, follow those steps:
1- write the definition of your function as usual.
2- your function name is consist of operator keyword Followed by the operation symbol which you overload.
For example to overloading addition operation (+) your function name will be :
operator+
It is possible to overloading almost all operators in C++. This list contains all operators we can overloading :
+
-
*
/
%
^
&
|
~
!
=
>
+=
-=
*=
/=
%=
^=
&=
|=
>>
>>=
=
==
!=
=
>=
&&
||
++
--
->*
,
->
[]
()
new
delete
new[]
delete[]
In the following example, we will overload and >> operators:
The Output:
Enter phone number in the form (123) 456-7890:
(800) 555-1212
The phone number entered was: (800) 555-1212
Note: You can find the full source code of this example in code.zip file.
Download
2. Basic Principles in Operator Overloading.
Introduction:
Calling function in some classes may be annoying, especially mathematical classes, for example:
- a =
2
+
3
- assign(
a, add(
2
,3
)
)
;
In C++ the overloading principle applies not only to functions, but to operators too.
- Operators can be extended to work not just with built-in types but also classes.
- Operator is used on objects of that class.
- Operator Overloading makes it very easy to write code that feels natural.
- It requires special care, can be abused to make code unreadable.
Basic Principles in Operator Overloading:
When using operator overloading, you have to:
- use it to increase readability of your program.
- avoid exaggeration in use.
To use operator overloading, follow those steps:
1- write the definition of your function as usual.
2- your function name is consist of operator keyword Followed by the operation symbol which you overload.
For example to overloading addition operation (+) your function name will be :
operator+
It is possible to overloading almost all operators in C++. This list contains all operators we can overloading :
+
-
*
/
%
^
&
|
~
!
=
>
+=
-=
*=
/=
%=
^=
&=
|=
>>
>>=
=
==
!=
=
>=
&&
||
++
--
->*
,
->
[]
()
new
delete
new[]
delete[]
In the following example, we will overload and >> operators:
- // Overloading the stream-insertion and
- // stream-extraction operators.
- #include <iostream>
- using
std::
cout
;
- using
std::
cin
;
- using
std::
endl
;
- using
std::
ostream
;
- using
std::
istream
;
- #include <iomanip>
- using
std::
setw
;
- class
PhoneNumber
- {
- friend
ostream &
operator<<
(
ostream&
, const
PhoneNumber&
)
;
- friend
istream &
operator>>
(
istream&
, PhoneNumber &
)
;
- private
:
- char
areaCode[
4
]
;
// 3-digit area code and null
- char
exchange[
4
]
;
// 3-digit exchange and null
- char
line[
5
]
;
// 4-digit line and null
- }
;
- // Overloaded stream-insertion operator (cannot be
- // a member function if we would like to invoke it with
- //cout <<somePhoneNumber;).
- ostream &
operator<<
(
ostream &
output, constPhoneNumber &
num )
- {
- output <<
"("
<<
num.areaCode
<<
") "
- <<
num.exchange
<<
"-"
<<
num.line
;
- return
output;
// enables cout << a << b << c;
- }
- istream &
operator>>
(
istream &
input, PhoneNumber &
num )
- {
- input.ignore
(
)
;
// skip (
- input >>
setw(
4
)
>>
num.areaCode
;
// input area code
- input.ignore
(
2
)
;
// skip ) and space
- input >>
setw(
4
)
>>
num.exchange
;
// input exchange
- input.ignore
(
)
;
// skip dash (-)
- input >>
setw(
5
)
>>
num.line
;
// input line
- return
input;
// enables cin >> a >> b >> c;
- }
- int
main(
)
- {
- PhoneNumber phone;
// create object phone
- cout
<<
"Enter phone number in the form (123) 456-7890:\n
"
;
- // cin >> phone invokes operator>> function by
- // issuing the call operator>>(cin, phone ).
- cin
>>
phone;
- // cout<< phone invokes operator<< function by
- // issuing the call operator<<(cout, phone ).
- cout
<<
"The phone number entered was: "
<<
phone <<
endl;
- return
0
;
- }
The Output:
Enter phone number in the form (123) 456-7890:
(800) 555-1212
The phone number entered was: (800) 555-1212
Note: You can find the full source code of this example in code.zip file.
Download
You must upgrade your account or reply in the thread to view hidden text.