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


Destruktor və konstruktor funksiyalarının köməyi ilə yaddaş sahəsinin ayrılması və azad olunması. (Bir misalın timsalında)



Yüklə 1,02 Mb.
səhifə53/74
tarix04.01.2023
ölçüsü1,02 Mb.
#121980
1   ...   49   50   51   52   53   54   55   56   ...   74
Alqoritmik dillər(C kitab) (10)

6.41.Destruktor və konstruktor funksiyalarının köməyi ilə yaddaş sahəsinin ayrılması və azad olunması. (Bir misalın timsalında)
Elə proqramlar vardır ki, onların tərtibində həm konstruktor, həm də destruktorun yazılmasına zəruriyyət vardır. Tutaq ki, sətrin özü və uzunluğu yerləşən sinif təyin etmək lazımdır.

Sinfi yaradan zaman sətri yerləşdirmək üçün yaddaş sahəsi ayırmaq, sətrin başlanğıc uzunluğunu 0-qəbul etmək lazımdır. Bu əməliyyatlar (sətrin inisiallaşdırılması) konstruktor yerinə yetirir. Obyekt(yəni sətir) ləğv olunan zaman yaddaş sahəsini azad etmək lazımdır. Bu əməliyyatı isə destruktor yerinə yetirir.


Sinfin adı strtype olsun. Len-sətrin uzunluğunu göstərən dəyişən işarə edilmişdir. Proqramda yaddaş sahəsinin ayrılması və azad olunması üçün malloc( )free( ) funksiyalarından istifadə edilmişdir. Proqramın mətni aşağıdaki kimidir:
#include
#include
#include
using namespace std;
#define size 255
class strtype{
char*p;
int len;
public:
str type( );//konstruktor
~strtype( );//destruktor
void set(char*ptr);
void show( );
};
//obyektin (sətrin) inisiallaşdırılması
Strtype :: strtype( )
{p=(char*) malloc(size); //size ölçüsü yaddaş sahəsinin ayrılması
//və ünvanının p-göstəricisinə verilməsi
if (!p){
cout <<”yaddaşın ayrılmasında səhv var\n”;
exit(1);
}
*p=’\0’;
len=0;
}
//obyektin ləğv olunması zamanı yaddaşın azad olunması
Strtype :: ~ strtype( )
{cout<<”p-ünvanına malik yaddaş sahəsinin azad olunması \n”;
free(p);
}
void strtype::set(char*ptr)
{if(strlen(p)>=size)


{cout<<”sətir həddindən artıq böyükdür\n”;
return;
}
strcpy(p,ptr);
len=strlen(p);
}
void strtype::show( )
{cout<
cout<<”\n”;
}
int main ( )
{strtype S1,S2;
S1.set(“bu yoxlamaqdır”);
S2.set(“C++ dili”);
S1.show( );
S2.show( );
return 0;
}



Yüklə 1,02 Mb.

Dostları ilə paylaş:
1   ...   49   50   51   52   53   54   55   56   ...   74




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin