• Parametrli konstruktorlar.
  • 5-ma’ruza. Konstruktorlar va destruktorlar. A’zo o’zgaruvchilarni initsializatsiyalash




    Download 321.25 Kb.
    Pdf ko'rish
    bet2/4
    Sana10.04.2023
    Hajmi321.25 Kb.
    #50126
    1   2   3   4
    Bog'liq
    konstruktor
    3-topshiriq cisco, 17 mayga referat, aaa, №1-Mustaqil ish TTS21-01 A-B-g (1)
    Standart konstruktorlar. Parametrlari bo‘lmagan konstruktor (yoki 
    jimlik bo‘yicha parametrlarga ega) standart konstruktor deb ataladi. Agar 
    foydalanuvchi tomonidan initsializatsiyalash uchun hech qanday qiymat 
    ko‘rsatilmagan bo‘lsa, standart konstruktor chaqiriladi. Masalan: 
    #include  
    class Fraction 

    private: 
    int m_numerator; 
    int m_denominator; 
    public: 
    Fraction() // jimlik bo‘yicha konstruktor

    m_numerator = 0; 
    m_denominator = 1; 

    int getNumerator() { return m_numerator; } 
    int getDenominator() { return m_denominator; } 
    double getValue() { return (double)m_numerator / m_denominator; 

    }; 
    int main() 

    Fraction drob; // argumentlar bo‘lmaganligi sababli, standart 
    Fraction () konstruktori chaqiriladi 
    cout << drob.getNumerator() << "/" << drob.getDenominator() << 
    '\n'; 
    return 0; 



    Bu sinf alohida int qiymatlari sifatida haqiqiy sonlarni o‘z ichiga oladi. 
    Standart konstruktor Fraction deb nomlanadi (xuddi sinf kabi). Biz Fraction 
    sinfining obyektini argumentlarsiz yaratganimiz uchun, standart 
    konstruktor obyekt uchun xotira ajratilgandan so‘ng darhol ishladi va 
    obyektimizni initsializatsiyalaydi. 
    Dasturni bajarish natijasi: 
    0/1 
    E'tibor bering, surat (m_numerator) va maxraj (m_denominator) 
    standart konstruktorda o‘rnatgan qiymatlarimiz bilan initsializatsiyalangan. 
    Bu shunday foydali xususiyatki, deyarli har bir sinf o‘z standart 
    konstruktoriga ega. Busiz, ularga oddiy qiymatlarni aniq belgilab 
    bermagunimizcha, surat va maxraj qiymatlari avtomatik olinardi (bu esa 
    xotiraning behuda sarflanishidir). 
    Parametrli konstruktorlar. Standart konstruktor sinflarimizni 
    standart qiymatlarga o‘tkazilishini ta'minlash uchun juda yaxshi bo‘lsa-da, 
    sinfimiz obyektlari uchun ma'lum qiymatlarga ega bo‘lish kerak bo‘ladi, biz 
    buni keyinroq beramiz. Yaxshiyamki, konstruktorlar parametrlar bilan ham 
    e'lon qilinishi mumkin. Surat va maxrajni initsializatsiyalash uchun 
    ishlatiladigan ikkita butun sonli konstruktor misoli –listingda berilgan. 
    #include  
    using namespace std; 
    class Fraction 

    private: 
    int m_numerator; 
    int m_denominator; 
    public: 
    Fraction()

    m_numerator = 0; 
    m_denominator = 1; 

    // Ikki parametrli konstruktor, ulardan biri standart qiymatga ega 
    Fraction(int numerator, int denominator=1) 



    assert(denominator != 0); 
    m_numerator = numerator; 
    m_denominator = denominator; 

    int getNumerator() { return m_numerator; } 
    int getDenominator() { return m_denominator; } 
    double getValue() { return (double) m_numerator / 
    m_denominator; } 
    }; 
    E'tibor bering, hozirda ikkita konstruktor bor: agar qiymat bermasak 
    chaqiriladigan standart konstruktor va agar qiymatlarni taqdim qilsak 
    chaqiriladigan 
    parametrli 
    konstruktor. 
    Bu 
    ikkita 
    konstruktor 
    funksiyalarning qo’shimcha yuklanishi tufayli bir sinfda hosil qilinishi 
    mumkin. Aslida, har qanday miqdordagi konstruktorni, agar ular yagona 
    parametrlarga ega bo‘lsa, belgilashingiz mumkin (ularning soni va turini 
    hisobga olgan holda). 
    Parametrli konstruktor foydalanish oson. Buning uchun to’g’ridan-
    to’g’ri initsializatsiyadan foydalanish kerak. 
    int a(7); // to‘g‘ridan-to‘g‘ri initsializatsiya 
    Fraction drob(4, 5); //to‘g‘ridan-to‘g‘ri initsializatsiya, Fraction (int, 
    int) konstruktori chaqiriladi 
    Bu yerda kasrni 4 va 5 raqamlari bilan initsializatsiya qildik, natija 4/5. 
    C++11 da uniform-initsializatsiyadan foydalanishimiz mumkin: 
    int a { 7 }; // uniform-initsializatsiya
    Fraction drob {4, 5}; 
    Parametrli konstruktor uchun faqat bitta parametrni belgilashimiz 
    mumkin, ikkinchi qiymat esa standart qiymat bo‘ladi: 
    Fraction seven(7); 
    Konstruktorlar uchun standart qiymatlar boshqa funksiyalar bilan bir 
    xil ishlaydi, shuning uchun yuqoridagi misolda seven(7) ni 
    chaqirganimizda, ikkinchi parametr 1 (standart) bo‘lgan Fraction (int, int) 
    chaqiriladi. 



    Download 321.25 Kb.
    1   2   3   4




    Download 321.25 Kb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    5-ma’ruza. Konstruktorlar va destruktorlar. A’zo o’zgaruvchilarni initsializatsiyalash

    Download 321.25 Kb.
    Pdf ko'rish