Bog'liq c da dasturlash fanidan tajriba ishlarini bajarish boyicha uslubiy korsatma (1)
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[size=a.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.
54
Initsializatsiya masalasini xal qilish uchun nusxa olish konstruktori kiritish
lozim: