|
Sinf a’zolari. Inkapsilyatsiya Hafta: 2 Ma’ruza: 2Ko’p qo’shishning oldini olish
|
səhifə | 2/4 | tarix | 28.11.2023 | ölçüsü | 462,77 Kb. | | #135849 |
| Leksiya #2 2. Ko’p qo’shishning oldini olish Agar TestHead.cpp kompilyatsiya qilinsa, u holda xatolik yuzaga keladi, chunki bu yerda Circle ko’p marta aniqlanayapti. Buning nimasi not’g’ri? Circle.h 1-qatorga qo’shildi. Bu paytda Circle header fayli Head.h ga ham qo’shildi. Bu ko’p marta qo’shish xatoligiga olib keladi. #ifndef va #define direktivalari header fayllarni ko’p marta qo’shish xatoligining oldini oladi. Bu jarayon qo’shish himoyasi deb ataladi. Dastur ishlashi uchun header faylga 3 qator kod yozib qo’yiladi. Bu jarayon quyidagi listingda ajratib ko’rsatilgan. Listing 9.8 CircleWithInclusionGuard.h 2. Ko’p qo’shishning oldini olish (#) belgisi bilan boshlanuvchi buyruqlar preprotsessor direktivalari deyiladi. Ular C++ preprotsessorlari tomonidan interpritatsiya qilinadi. #ifndef preprotsessor direktivasi “agar aniqlanmagan bo’lsa ( if not defined )” holatida qo’llaniladi. Birinchi qator CIRCLE_H belgisi oldindan aniqlanmaganligini tekshiradi. Agar aniqlanmagan bo’lsa, u holda ikkinchi qatorda #define direktivasi orqali belgi aniqlanadi va header faylning qolgan qismi qo’shiladi, aks holda header faylning qolgan qismi tashlab yuboriladi. #endif direktivasi header faylning yakunlanganini anglatadi. 2. Ko’p qo’shishning oldini olish Sinfni aniqlashda ko’p marta qo’shish xatosidan qutilish va belgiga nom berish uchun quyidagi shablondan foydalnishingiz mumkin: #ifndef SinfNomi_H #define SinfNomi_H #endif 3. Sinflarda inline funksiyalar Ishlashni yaxshilash uchun qisqa funksiyalarni inline funksiyalar sifatida aniqlashingiz mumkin. Sinf aniqlanishida funksiya imlementatsiya qilinsa, u avtomatik ravishda inline funksiyaga aylanadi. Bu jarayon inline aniqlanish deb ham ataladi. Misol uchun, quyidagi A sinf aniqlanishida konstruktor va f1 funksiya inline funksiyalar, ammo f2 bunday emas.
Dostları ilə paylaş: |
|
|