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


Unar operatorların yüklənməsi



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

Unar operatorların yüklənməsi
Unar operatorların yüklənməsi binar operatorların yüklənməsinə oxşardır. Bu halda iki operanddan deyil, bir operanddan istifadə olunur. Üzv-funksiyalardan istifadə etməklə unar operatorların yüklənməsində funksiyalar parametrə malik olmurlar. Çünki unar əməliyyatlarda bir operand olduğuna görə operator-funksiya bu operandı generasiya edir.
Aşağıdaki misalda coord sinfinə nəzərən ++ inkrement operatorunun yüklənməsi göstərilmişdir:
//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 sinfi üçün ++ operatorunun yüklənməsi
coord coord::operator++( )
{
x++;
y++;
return*this; //qiymət mənimsədildikdən sonra
//alınan obyekti qaytarır
}
int main( )
{
coord 01(10,10);
int x,y;

++01; //obyektin inkrementi
01.get_xy(x,y);
cout<<”(++01)x:”<
return 0;
}
Inkrement operatoru öz operandını vahid qədər aştırdığına görə bu operatorun yüklənməsi nəticəsində obyekt dəyişir. this göstəricisi onu bildirir ki, increment əməliyyatından sonra obyekt dəyişir və bu dəyişən obyekt funksiya daxilindən qaytarılır. Ona görə də increment operatorunu daha mürəkkəb operatorlarda istifadə etmək olar. Məsələ, 02=++01;

6.48.Konstruktorların yüklənməsi
C++ dilində sinfin konstruktorunun yüklənməsi sadədir. Sinfin destruktorunu yükləmək olmaz. Konstruktorun yüklənməsindən aşağıdaki üç məqsəd üçün istifadə etmək olar:
-proqramın çevikliyini təmin etmək üçün;
-massivlərlə işləmək imkanını artırmaq üçün;
-konstruktorların surətini almaq üçün.
Sadə halda konstruktorun yüklənməsinə baxaq.
Konstruktorun yüklənməsinin ən çox istifadə olunması obyektlərin inisiallaşdırılması üsullarının seçilməsinin təmin edilməsi ilə əlaqədardır. Məsələ, növbəti proqramda 01-obyektinə başlanğıc qiymət verilir, 02-obyektinə isə başlanğıc qiymət verilmir. Əgər arqumentlərin siyahısı boş olan konstruktor ləğv edilərsə proqram kompilyasiya olunmayacaq. Çünki myclass tipli obyektdə konstruktor olmayacaq.

Əksinə, əgər parametrlə olan konstruktor ləğv edilərsə, proqram yenə də kompilyasiya olunmayacaq. Çünki myclass tipli inisiallaşmış obyektin konstruktoru olmayacaq. Proqramın düzgün kompilyasiyası üçün hər iki konstruktor lazımdır:


#include
using namespace std;
class myclass{
int x;
public:
//konstruktorun iki üsulla yüklənməsi
myclass ( ){x=0;} //inisiallaşdırma yoxdur
myclass(int n){x=n;} // inisiallaşdırma var
int get x( ){return x;}
};
int main ( )
{
myclass 01(10); //başlanğıc qiymətlə elan etmə
myclass 02; //başlanğıc qiymətsiz elan etmə
cout<<”01:”<<01.get x( )<<’\n’;
cout<<”02:”<<02.get x( )<<’\n’;
return 0;
}


Yüklə 1,02 Mb.

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




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin