• string s1(10); string s2(20) s1 = s2;
  • string string::operator()(int n1, int n2) {




    Download 5,48 Mb.
    Pdf ko'rish
    bet31/53
    Sana21.11.2023
    Hajmi5,48 Mb.
    #102807
    1   ...   27   28   29   30   31   32   33   34   ...   53
    Bog'liq
    Texnologiyalari va kommunikatsiyalarni rivojlantirish vazirligi

    string string::operator()(int n1, int n2) { 
    string tmp = *this; 


    53 
    delete tmp.Str; 
    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 muhimdir. 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[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: 
    string::string(const string& a) 

     p=new char[sizeqsz]; 
     strcpy(p,a.p); 

    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 5,48 Mb.
    1   ...   27   28   29   30   31   32   33   34   ...   53




    Download 5,48 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    string string::operator()(int n1, int n2) {

    Download 5,48 Mb.
    Pdf ko'rish