Vi fəsil. C++ dilində proqramlaşdırma


Binar operatorların yüklənməsi



Yüklə 1,02 Mb.
səhifə59/74
tarix04.01.2023
ölçüsü1,02 Mb.
#121980
1   ...   55   56   57   58   59   60   61   62   ...   74
Alqoritmik dillər(C kitab) (10)

Binar operatorların yüklənməsi
Əgər sinfin üzvü operator funksiya binar operatoru yükləyirsə, onda funksiyada ancaq bir parametr olmalıdır. Bu parametrə operatordan sağda yerləşən obyekt verilir. Aşağıdaki misalda coord sinfinə nəzərən + operatorunun yüklənməsi göstərilmişdir. Bu sinif x,y koordinatları ilə işləmək üçün istifadə olunur.
//coord sinfinə nəzərən + operatorunun yüklənməsi
#include
using namespace std;
class coord{
int x,y; //koordinatların qiymətləri

public:
coord ( ){x=0; y=0;}
coord (int i; int j){x=i;y=j;}
void get_xy(int&I;int&j){i=x;j=y;}
coord operator+(coord ob2);
};
//coord sinfinə nəzərən + operatorunun yüklənməsi
coord coord::operator+(coord ob2)
{
coord temp;
temp.x=x+ob2.x;
temp.y=y+ob2.y;
return temp;
}
int main ( )
{
coord 01(10,10),02(5,3)},03;
int x,y;
03=01+02; //iki obyektin toplanması

//operator +( ) funksiyasının müraciət
03.get_xy(x,y);
cout<<”(01+02)x:”<
return 0;
}
Proqram yerinə yetirildikdən sonra ekrana aşağıdakilar verilər:
(01+02)x:15, y:13
Bu proqramda operator +( ) funksiyası coord tipli obyekt qaytarır. Bu obyektdə x-oxu boyunca koordinatların cəmi x-dəyişəninə, y-oxu boyunca koordinatların cəmi y-dəyişəninə verilir. temp obyekti müvəqqəti obyektdir və nəticəni saxlamaq üçün istifadə edilir. temp obyekti həm də funksiya daxilindən qaytarılan obyektdir. Qeyd edək ki, operandlardan hər biri dəyişmir. temp obyektinin təyinatı aydındır. Bu halda məsələ, 10+4 ifadəsinin nəticəsi 14-dir. Lakin 10 və 4-operandlarının hər biri dəyişmir. Beləliklə, müvəqqəti obyekt nəticələri saxlamaq üçün zəruridir.
Operator+( ) funksiyasında coord tipli obyektin qaytarılmasının mənası ondan ibarətdir ki, coord tipli obyektlərin toplanması nəticəsini mürəkkəb ifadələrdə işlətmək olar. Məsələ,
03=01+02;
-operatoru düzgündür. Çünki 01+02-əməlinin nəticəsi obyektdir və bu nəticəni 03-obyektinə mənimsətmək olar. Əgər qaytarılan obyekt başqa tipli obyekt olarsa, onda bu yazılış düzgün olmaz. Aşağıdaki yazılış da doğrudur:
03=01+02+01+03;
coord tipli obyekt operator-funksiyasının qaytardığı obyekt olduğu üçün aşağıdaki yazılış da doğrudur:
(01+02).get_xy(x,y);
Burada operator+( )-funksiyasının qaytardığı müvəqqəti obyekt bilavasitə istifadə olunur. Bu əməliyyat yerinə yetirildikdən sonra müvəqqəti obyekt ləğv olunur.


Yüklə 1,02 Mb.

Dostları ilə paylaş:
1   ...   55   56   57   58   59   60   61   62   ...   74




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin