O. X. Azamatov


Qiymat berish va initsializatsiya



Yüklə 1,82 Mb.
Pdf görüntüsü
səhifə75/119
tarix31.12.2021
ölçüsü1,82 Mb.
#49500
1   ...   71   72   73   74   75   76   77   78   ...   119
3072-Текст статьи-7829-1-10-20200908

9.6. Qiymat berish va initsializatsiya 
Qiymat  berish  va  initsializatsiya  turli  amallardir.  Ayniqsa  destruktor 
aniqlanganda bu muximdir. Biror X tipidagi obyektni insializatsiya qilish nusxa olish 
konstruktori yordamida amalga oshiriladi. Satr – bu simvollar vektoriga ko‘rsatkich.  
Vektor konstruktor tomonidan yaratilib, destruktor bilan o‘chirilganda muammo 
tug‘ilishi mumkin: 
  string s1(10); 
  string s2(20) 
  s1 = s2; 
Bu  yerda  ikki  simvolli  vektor  joylashadi,  lekin  s1  =  s2  qiymat  berish  natijasida 
biri o‘chirilib, ikkinchisi nusxasi bilan almashtiriladi. Funksiyadan chiqishda s1 va s2 
uchun destruktor chaqiriladi va bitta vektor ikki marta o‘chiriladi. Bu muammoni xal 
qilish uchun qiymat berish amalini qo‘shimcha yuklash lozim: 
string& string::operator=(const string& a) 
{   if (this !=&a) {   // opasno, kogda s=s 
     delete p; 
     p = new char[size=a.size]; 
     strcpy(p,a.p); 
  } 
  return *this; } 
Foydalanuvchi  qiymat  berish  operatori  initsializatsiya  qilinmagan  obyektga 
qo‘llanmaydi. Bu holda p ko‘rsatkich tasodifiy qiymatga ega bo‘ladi. 


82 
 
Initsializatsiya  masalasini  xal  qilish  uchun  nusxa  olish  konstruktori  kiritish 
lozim: 
string::string(const string& a) 
{   p=new char[size=sz]; 
     strcpy(p,a.p); } 

Yüklə 1,82 Mb.

Dostları ilə paylaş:
1   ...   71   72   73   74   75   76   77   78   ...   119




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin