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( ) və 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)