O. X. Azamatov


Qiymat berish va initsializatsiya


Download 1.82 Mb.
Pdf ko'rish
bet75/119
Sana09.01.2022
Hajmi1.82 Mb.
#256439
1   ...   71   72   73   74   75   76   77   78   ...   119
Bog'liq
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); } 

Download 1.82 Mb.

Do'stlaringiz bilan baham:
1   ...   71   72   73   74   75   76   77   78   ...   119




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling