Obyektlərə mənimsətmə operatorunun tətbiqi
səhifə 56/74 tarix 04.01.2023 ölçüsü 1,02 Mb. #121980
Alqoritmik dillər(C kitab) (10) 6.44.Obyektlərə mənimsətmə operatorunun tətbiqi
Əgər iki obyektin tipi eynidirsə, onda bir obyekti digərinə mənimsətmək olar.
Mənimsətmə zamanı bir obyektin bütün üzv-verilənləri digər obyektə kopiya olunur. Məsələ, 01 obyekti 02 obyektinə mənimsədilərsə 01- obyektində yerləşən bütün verilənlərin surətləri 02- obyektinin uyğun üzvlərində alınır. İki obyektin mənimsəmə operatorundan sonra verilənləri eyni olur. Əgər obyektlərin tipi müxtəlifdirsə, onda kompilyasiya zamanı səhv haqqında məlumat verilir. Obyektlərin mənimsədilməsinə aid aşağıdaki proqrama baxaq:
//obyektlərin mənimsədilməsinə aid missal
#include
using namespace std;
class myclass {
int a, b;
public:
void set (int i, int j) {a=i; b=j;}
void show ( ) {cout<
};
int main ( )
{myclass 01, 02;
01.set (10,4);
//01 obyekti 02-yə mənimsədilir
02=01;
01.show ( );
02.show ( );
return 0;
}
Bu misalda 01 obyektinin a və b dəyişənləri uyğun olaraq 10 və 4 qiymətlərini alır. 02=01;- mənimsətmə operatorundan sonra 01.a- dəyişəninin qiyməti 02.a- ya, 01.b- dəyişəninin qiyməti 02.b- yə mənimsədilir. Hər iki obyekt bir-birindən asılı olmadan əvvəlki kimi qalır. Məsələ, mənimsətmə operatorundan sonra 01.a- dəyişəninə qiymət vermək üçün 01.set ( ) funksiyasına müraciət edilməsi 02- obyektinə və onun a- dəyişəninə təsir etmir.
6.45.Obyektlərin funksiyalara ötürülməsi
Obyektləri arqument olaraq digər tipli dəyişənlər kimi funksiya daxilinə ötürmək olar. Sadəcə olaraq funksiyanın parametrlərinin elanı olan hissədə sinfin tipini göstərmək lazımdır. Sonra isə bu sinfin obyektindən arqument kimi funksiyaya müraciətdə istifadə etmək lazımdır. Digər tipli verilənlər kimi susma prinsipinə görə obyektlər funksiyaya qiymətə görə ötürülür. Aşağıdaki misalda obyektin funksiyaya ötürülməsi nümayiş etdirilmişdir.
#include
using namespace std;
class samp{
int i;
public:
samp(int n) {i=n;} //konstruktor
int get_i( ) {return i;}
};
//funksiya ob-nın qiymətini qaytarır
int sqr_it(samp ob)
{
return ob.get_i( )*ob.get_i( );
}
int main( )
{
samp a(10), b(2);
cout<
cout<
return 0;
}
Bu proqramda samp sinfi yaradılır və bu sinifdə bir tam i dəyişəni var sqr_it( ) funksiyası samp tipli arqument alır və qaytardığı qiymət bu obyektin i- dəyişəninin qiyməti olur. Proqramın nəticəsi 100 və 4-ədədləri olar.
Obyektin funksiya daxilinə qiymətə görə ötürüldüyünə görə funksiya daxilində ötürülən arqumentin surəti yaranır və bu surət obyektin özü deyildir.
Ona görə də funksiyanın daxilində obyektin surətinin dəyişdirilməsi obyektin özünə təsir etmir.
Dostları ilə paylaş: