Reja: Namespace – nomlar fasozi nima? Nomlar fazosida xatoliklar
Download 1.49 Mb. Pdf ko'rish
|
Informatika asoslari 1 taqdimot Nomalum turlar va namespace 2019 (2)
Reja: 1. Namespace – nomlar fasozi nima? 2. Nomlar fazosida xatoliklar; 3. Ichma – ich joylashgan nomlar fazosi; 4. Turdan turga o’tkazish operatorlari; 5. Xulosa. PhD: Mallayev O.U. https://t.me/daslabkiAqil Namespace – nomlar fasozi
bir-xil identifakator larni bitta dasturda ishlatish muammosini hal qiladi.
Namespace ni umumiy strukturasi quyidagicha:
<nom> { ……… } Namespace ga misol: Umimiy nomlar sohasidan foydalanish Nomlar fazosida xatoliklar: Masala: “talaba” nomli nomlar fazosi va unda “Talaba” classini yarating. Class maydonlari: Familiyasi, ismi, kursi, baholari, stipendiyasi . Class komponentalarini inkapsulyastiyalash, konstruktorlar va class metodlarini ishlab chiqing. Obyektlar massivini yarating va ular ustida qidirish, saralash, o’zgartirish amallarini bajaring. Dasturi Aniq va aniq bo’lmagan o’zgartirishlar
C ++ aniq va noma’lum ma'lumotlar turini o'zgartirishni farqlaydi. Ma'lum bo'lmagan turdagi ma'lumotlar konversiyasini C ++ kompilyatori amalga oshiradi, lekin dasturchining o'zi aniq ma'lumotlarni aylantirishni amalga oshiradi. Ma'lumotlar turini o'zgartirish to'g'risida quyidagi jadvalda keltirilgan. Jadvalda bo'linish operatsiyasini ko'rib chiqilgan. Biz int ni qabul qiladigan butun son turi sifatida, haqiqiy ma'lumotlar turi suzuvchi bo'ladi. Turdan turga o’tkazishning aniq va noaniq usullari x y Bo’lish natijasi Misol Bo’linuvchi Bo’luvchi Vaqtincha x = 15 y = 2
Ma'lumot turlarini aniq o'zgartirish usuli:
turiga o'zgartiriladi.
C ++ shuningdek, bir tomonlama(Unar) operatsiyani bajaradi:
raqam * /)
static_cast natija 7.5
Turdan turga o’tkazish operatorlari Ba'zi turdan-turga o’tkazuvchi operatorlar faqat C ++ da qo'llaniladi. Ushbu operatorlar C tili turini tavsiflovchi noaniqlik va xato imkoniyatlarini yo'q qiladi, bu operatorlar quyida keltirilgan.
ishlatiladi.
C ++ da ishlatiladigan safe_cast tekshirilayotgan MSILni yaratish uchun ishlaydi. So'nggi chora sifatida const_cast va
reinterpret_cast-dan foydalaniladi. static_cast - C ++ da ma'lumotlarning bir xil turini o’tkazish
static_cast-ni bir turni ikkinchisiga o'tkazish uchun ishlatish mumkin, ammo u noto'g'ri konversiyani amalga oshirish uchun ishlatilmaydi, masalan, qiymatni ko'rsatgichga yoki aksincha. C-uslubidagi quyishdan ko'ra static_cast operatsiyasidan foydalanish tavsiya etiladi, chunki static_cast yaroqsiz kastlarni cheklaydi va shuning uchun xavfsizroqdir.
uchun ma'lumotlar turini aniq ko'rsatishingiz kerak bo'lgan funktsiya shablonidir, ya'ni shablon
parametrini belgilashingiz kerak. Funksiya shabloni static_cast va dynamic_cats
"polimorfik tiplar" ierarxik classi a'zolariga nisbatan qo'llaniladi.
Masala: Bir nechta merosni ko'rsatuvchi sinf ierarxiyasi
xavfsiz uzatish mumkin. Ammo, agar turdan turga keltirish natijasida D obyekt A obyektiga ishora qilsa, A obyekti qaysi namunaga olib keladi?
Bu noaniq turdan turga keltirish xatoga olib kelishi mumkin. Ushbu muammoni hal qilish uchun siz ikkita aniq turdan turga keltirishni bajarishingiz mumkin. Masala: Turlar ierarxiyasi: Turlar ierarxiyasi ga misol static_cast operatori Ifodani faqat iborada mavjud bo'lgan turlarga asoslanib, tur identifikatorini kiritish uchun o'zgartiradi.
-
operatoridan ko'rsatgichni bazaviy sinfga va olingan sinfga ko'rsatgichga aylantirish kabi operatsiyalar uchun foydalanish mumkin. Bunday o'zgartirishlar har doim ham xavfsiz emas. Umuman olganda, static_cast raqamli ma'lumotlarning turlarini o'zgartirish uchun ishlatiladi, masalan, sonlar yoki butun sonlarga raqamlar, suzuvchi nuqta raqamlari va konversiyada ishlatiladigan ma'lum ma'lumotlar turlari.
Misol tahlili
-dan farqli
o'laroq, static_cast
konversiyasida ish vaqti tekshiruvi amalga oshirilmaydi. Pb bilan ko'rsatilgan obyekt D turining obyekti bo'lmasligi mumkin, bu holda *pd2-dan foydalanish dahshatli oqibatlarga olib kelishi mumkin. Masalan, D sinfiga tegishli, ammo B sinfiga kirmaydigan funktsiyani chaqirish kirishning buzilishiga olib kelishi mumkin.
ierarxiyasi bo'ylab harakatlantiradilar. Ammo static_cast faqat operatorda taqdim etilgan ma'lumotlardan foydalanadi va shuning uchun xavfli bo'lishi mumkin. Misol: Agar B class ning test funksiyasidan “ virtual ” kalit so’zini olib tashasam xatolik yuz beradi.
Static_cast
operatori har qanday yashirin konversiyani, shu jumladan standart konversiyalarni va foydalanuvchi belgilagan konversiyalarni amalga oshirish uchun ham ishlatilishi mumkin.
Foydalanilgan adabiyotlar 1. https://docs.microsoft.com/ru-ru/cpp/cpp/dynamic-cast- operator?view=vs-2019 2. https://docs.microsoft.com/ru-ru/cpp/cpp/bad-cast- exception?view=vs-2019 3. https://docs.microsoft.com/ru-ru/cpp/cpp/static-cast- operator?view=vs-2019 4. https://docs.microsoft.com/ru-ru/cpp/cpp/reinterpret-cast- operator?view=vs-2019 5. https://ravesli.com/urok-171-dinamicheskoe-privedenie- tipov-operator-dynamic_cast/ 6. http://cppstudio.com/post/5165/
Xulosa
Nomlar fazosi – kutubxonalarda joylashgan sinf a’zolarini bitta dasturda bir xil nom ostida ishlatish imkonini beradi.
1) dynamic_cast(); 2) satatic_cast(); 3) bad_cast(); 4) const_cast(); Download 1.49 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling