Aliyev o. A, Xo‘jamuratov b. «C++ da dasturlash» fanidan tajriba ishlarini bajarish bo‘yicha uslubiy ko‘rsatma


Download 2.01 Mb.
bet25/27
Sana20.11.2023
Hajmi2.01 Mb.
#1787789
1   ...   19   20   21   22   23   24   25   26   27
Bog'liq
file8

tmp.Str = new char[n2-n1+1];
strncpy(tmp.Str, Str+n1, n2-n1);
return tmp;
}

Qiymat berish va initsializatsiya


Qiymat berish va initsializatsiya turli amallardir. Ayniqsa destruktor aniqlanganda bu muximdir. Biror X tipidagi obyektni intsializatsiya 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. Funktsiyadan 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[sizeqa.size];
strcpy(p,a.p);
}
return *this;
}
Foydalanuvchi qiymat berish operatori initsializatsiya qilinmagan obyektga qo’llanmaydi. Bu xolda p ko’rsatkich tasodifiy qiymatga ega bo’ladi.
Initsializatsiya masalasini xal qilish uchun nusxa olish konstruktori kiritish lozim:
string::string(const string& a)
{
p=new char[sizeqsz];
strcpy(p,a.p);
}
Nazorat savollari:

  1. Binar amallarni qo’shimcha yuklash deganda nimani tushinasiz?

  2. Unar amallarni qo’shimcha yuklash deganda nimani tushinasiz?

  3. Inkrement va dekrement amallarini qo’shimcha yuklash deganda nimani tushinasiz?

  4. Indekslash va funksiyani chaqirish amallarini qo’shimcha yuklash deganda nimani tushinasiz?
  5. Qiymat berish va initsializatsiya deganda nimani tushinasiz?


Topshiriqlar:
1. Variantga mos keluvchi sinfni tanlang. Qo’shimcha yuklangan operatsiyalar bilan sinf tavsifini to’ldiring. Shu operatsiyalarni amalga oshiring. Testlashni bajaring.
2. Variantga mos keluvchi vazifani bajarish uchun funktsional sinf yarating. Testlashni bajaring.





Download 2.01 Mb.

Do'stlaringiz bilan baham:
1   ...   19   20   21   22   23   24   25   26   27




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