konstruktor

DOCX 6 стр. 25,7 КБ Бесплатная загрузка

Предварительный просмотр (5 стр.)

Прокрутите вниз 👇
1 / 6
6-amaliy mashg’ulot. sinfning amal qilish hududi va sinf komponentalariga murojaat.sinf komponentalariga murojaatni boshqarish konstruktor - bu bir xil sinfdagi obyekt yaratilganda avtomatik ravishda chaqiriladigan sinf metodining maxsus turi. konstruktorlar, odatda, standart / foydalanuvchi tomonidan berilgan qiymatlarga ega bo'lgan sinf a'zolarining o'zgaruvchilarini initsializatsiyalash yoki ishlatilayotgan sinf uchun zarur bo'lgan konfiguratsiya bosqichlarini bajarish uchun ishlatiladi (masalan, ma'lum bir fayl yoki ma'lumotlar bazasini ochish). oddiy metodlardan farqli o'laroq, konstruktorlar ularni nomlashning ma'lum qoidalariga ega: – konstruktorlar har doim sinf bilan bir xil nomga ega bo'lishi kerak (katta va kichik harflar hisobga olinadi); – konstruktorlar qaytish turiga ega emas (hatto void emas). 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, 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() { …
2 / 6
'tibor bering, bizda hozirda ikkita konstruktor bor: agar biz qiymat bermasak chaqiriladigan standart konstruktor va agar biz qiymatlarni taqdim qilsak chaqiriladigan parametrli konstruktor. bu ikkita konstruktor funksiyalarning haddan tashqari yuklanishi tufayli bir sinfda tinch -totuv yashashi mumkin. aslida, siz har qanday miqdordagi konstruktorni, agar ular yagona parametrlarga ega bo'lsa, belgilashingiz mumkin (ularning soni va turini hisobga olgan holda). parametrli konstruktordan qanday foydalanish kerak? hammasi oddiy! to'g'ridan-to'g'ri initsializatsiya: int a(7); // to’g’ri-to’g’ri initsializatsiya fraction drob(4, 5); //to'g'ridan -to'g'ri ishga tushirilganda, fraction (int, int) konstruktori chaqiriladi bu yerda biz kasrni 4 va 5 raqamlari bilan initsializatsiya qildik, natija 4/5! c++11 da biz bir xil initsializatsiyadan foydalanishimiz mumkin: int a { 7 }; // uniform-initsializatsiya fraction drob {4, 5}; biz 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, …
3 / 6
tijada fraction (9, 1) konstruktoriga murojaat bo'ladi. shu bilan birga, sinfni ishga tushirishning bu shaklidan qochish tavsiya etiladi, chunki bu unchalik samarasiz bo'lishi mumkin. bir xil boshlang'ich, to'g'ridan -to'g'ri ishga tushirish va nusxa ko'chirish boshlang'ich ma'lumotlarning asosiy turlari bilan bir xil bo'lsa -da, bu sinflarga umuman to'g'ri kelmaydi (garchi yakuniy natija ko'pincha bir xil bo'ladi). bu masalani keyingi darslarda batafsil ko'rib chiqamiz. qoida: o'zingizning sinflaringiz obyektlari bilan nusxa ko'chirishni ishlatmang. konstruktorlar sonini kamaytirish. fraksiya klassi va ikkita konstruktorli (standart va parametrli) misolda standart konstruktor aslida ortiqcha. biz bu sinfni shunday soddalashtira olamiz: #include class fraction { private: int m_numerator; int m_denominator; public: // jimlik bo’yicha konstruktor fraction(int numerator=0, 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 static_cast (m_numerator) / m_denominator; } }; garchi bu konstruktor hali ham standart konstruktor …
4 / 6
class date { private: int m_day = 12; int m_month = 1; int m_year = 2018; public: date() // oshkormas generatsiya qilingan konstruktor { } }; bu konstruktor sinf ob'ektlarini yaratishga imkon beradi, lekin ularni initsializatsiyalamaydi yoki sinf a'zolariga qiymatlar tayinlamaydi. siz aniq yaratilmagan konstruktorni ko'ra olmasangiz ham, uning mavjudligini isbotlashingiz mumkin: class date { private: int m_day = 12; int m_month = 1; int m_year = 2018; // hech qanday konstruktor ta'minlanmagan, shuning uchun c ++ avtomatik ravishda umumiy standart konstruktorni yaratadi }; int main() { date date; // yashirin konstruktorni chaqiring return 0; } yuqoridagi kod kompilyatsiya qilinadi, chunki yopiq konstruktor (umumiy bo'lgan) date obyektini yoqadi. agar sizning sinfingizda boshqa konstruktorlar bo'lsa, u holda yashirin tarzda yaratilgan konstruktor yaratilmaydi. masalan: class date { private: int m_day = 12; int m_month = 1; int m_year = 2018; public: date(int day, int month, int year) // oddiy konstruktor (jimlik bo’yicha …
5 / 6
iriladi. bu konstruktor tanasi bajarilishidan oldin sodir bo'ladi. buni quyidagicha ko'rsatish mumkin: #include class a { public: a() { std::cout << "a\n"; } }; class b { private: a m_a; // b a'zo o'zgaruvchi sifatida a ni o'z ichiga oladi public: b() { std::cout << "b\n"; } }; int main() { b b; return 0; } dasturni bajarish natijasi: a b b o'zgaruvchisi yaratilganda, b () konstruktori chaqiriladi. konstruktor tanasi bajarilishidan oldin m_a a sinfining standart konstruktorini chaqirib initsializatsiyalanadi. bu a xulosasini beradi, keyin boshqaruv b konstruktoriga qaytadi va b konstruktorining tanasi bajarila boshlaydi. bu yerda mantiqiy, chunki b () konstruktori m_a o'zgaruvchisini ishlatishni xohlashi mumkin, shuning uchun avval m_a ni initsializatsiyalash kerak.

Хотите читать дальше?

Скачайте все 6 страниц бесплатно через Telegram.

Скачать полный файл

О "konstruktor"

6-amaliy mashg’ulot. sinfning amal qilish hududi va sinf komponentalariga murojaat.sinf komponentalariga murojaatni boshqarish konstruktor - bu bir xil sinfdagi obyekt yaratilganda avtomatik ravishda chaqiriladigan sinf metodining maxsus turi. konstruktorlar, odatda, standart / foydalanuvchi tomonidan berilgan qiymatlarga ega bo'lgan sinf a'zolarining o'zgaruvchilarini initsializatsiyalash yoki ishlatilayotgan sinf uchun zarur bo'lgan konfiguratsiya bosqichlarini bajarish uchun ishlatiladi (masalan, ma'lum bir fayl yoki ma'lumotlar bazasini ochish). oddiy metodlardan farqli o'laroq, konstruktorlar ularni nomlashning ma'lum qoidalariga ega: – konstruktorlar har doim sinf bilan bir xil nomga ega bo'lishi kerak (katta va kichik harflar hisobga olinadi); – konstruktorlar qaytish turiga ega ema...

Этот файл содержит 6 стр. в формате DOCX (25,7 КБ). Чтобы скачать "konstruktor", нажмите кнопку Telegram слева.

Теги: konstruktor DOCX 6 стр. Бесплатная загрузка Telegram