C++: a beginner's Guide, Second Edition


  C++ A Beginner’s Guide by Herbert Schildt  39



Download 11,33 Mb.
Pdf ko'rish
bet134/194
Sana12.03.2022
Hajmi11,33 Mb.
#491693
1   ...   130   131   132   133   134   135   136   137   ...   194
Bog'liq
C A Beginner\'s Guide 2nd Edition (2003)

38 
C++ A Beginner’s Guide by Herbert Schildt 


39 
C++ A Beginner’s Guide by Herbert Schildt 
The output is shown here:
Original value of a: 1, 2, 3
Original value of b: 10, 10, 10
Value of c after c = a + b: 11, 12, 13
Value of c after c = a + b + c: 22, 24, 26
Value of c after c = b = a: 1, 2, 3
Value of b after c = b = a: 1, 2, 3
As you can see by looking at operator+( ), now both operands are passed to it. The left operand is 
passed in op1, and the right operand in op2.


40 
C++ A Beginner’s Guide by Herbert Schildt 
In many cases, there is no benefit to using a friend function instead of a member function when 
overloading an operator. However, there is one situation in which a friend function is quite useful: when 
you want an object of a built-in type to occur on the left side of a binary operation. To understand why, 
consider the following. As you know, a pointer to the object that invokes a member operator function is 
passed in this. In the case of a binary operator, it is the object on the left that invokes the function. This 
is fine, provided that the object on the left defines the specified operation. For example, assuming some 
object called T, which has assignment and integer addition defined for it, then this is a perfectly valid 
statement:
T = T + 10; // will work
Since the object T is on the left side of the + operator, it invokes its overloaded operator function, which 
(presumably) is capable of adding an integer value to some element of T. However, this statement won’t 
work:
T = 10 + T; // won't work
The problem with this statement is that the object on the left of the + operator is an integer, a built-in 
type for which no operation involving an integer and an object of T’s type is defined. The solution to the 
preceding problem is to overload the + using two friend functions. In
A Closer Look at Classes
this case, the operator function is explicitly passed both arguments and is invoked like any other 
overloaded function, based upon the types of its arguments. One version of the + operator function 
handles object + integer, and the other handles integer + object. Overloading the + (or any other binary 
operator) using friend functions allows a built-in type to occur on the left or right side of the operator. 
The following program illustrates this technique. It defines two versions of operator+( ) for objects of 
type ThreeD. Both add an integer value to each of ThreeD’s instance variables. The integer can be on 
either the left or right side of the operator.



Download 11,33 Mb.

Do'stlaringiz bilan baham:
1   ...   130   131   132   133   134   135   136   137   ...   194




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish