C++ da umumiy turlardan foydalangan holda, shablon funksiyalar va sinflarni aniqlashimiz mumkin



Download 52,16 Kb.
bet2/10
Sana01.07.2021
Hajmi52,16 Kb.
#106308
1   2   3   4   5   6   7   8   9   10
Bog'liq
C

int maxValue(int value1, int value2)

  • {

  • if (value1 > value2)

  • return value1;

  • else

  • return value2;

  • }

  • double maxValue(double value1, double value2)

  • {

    10. if (value1 > value2)

    11. return value1;

    12. else

    13. return value2;

    14. }

    15. char maxValue(char value1, char value2)



    16. {

    17. if (value1 > value2)

    18. return value1;

    19. else

    20. return value2;

    21. }


    22. string maxValue(string value1, string value2)

    23. {


    24. if (value1 > value2)

    25. return value1;

    26. else

    27. return value2;

    28. }

     

    Bu funksiyalarning to`rtalasi ham ulardagi qo`llanilgan turlarning har xil ekanliklari inobatga olinmasa, deyarli bir xil. Birinchi funksiya int turini, ikkinchi funksiya double turini, uchinchi funksiya char turini va to`rtinchi funksiya string turini qo`llaydi. Agar biz quyidagicha ko`rinishda, umumiy tur bilan, bittagina, oddiy funksiyani aniqlasak, bir funksiyaning o`zida barcha turlarning saqlanib qolishi, ortiqcha bo`sh joyning paydo bo`lishi va dasturning osonlik bilan qayta sozlanishiga erishishimiz mumkin:



    1. GenericType maxValue(GenericType value1, GenericType value2)

    2. {

    3. if (value1 > value2)

    4. return value1;

    5. else

    6. return value2;

    7. }

     

    Mazkur GenericType (UmumiyTur) int, double, char, string kabi turlarning barchasini qo`llay oladi. C++ funksiya shablonlarini umumiy tur bilan aniqlash imkonini beradi. 6.1-kodli ro`yxat umumiy turdagi ikkita qiymatning kattasini topish uchun funksiya shablonini aniqlaydi.



    1.1-kodli ro'yxat. GenericMaxValue.cpp

    1. #include

    2. #include

    3. using namespace std;

     

    1. template <typename T>

    2. T maxValue(T value1, T value2)

    3. {

    4. if (value1 > value2)

    5. return value1;

    6. else

    10. return value2;

    11. }


     

    12. int main()

    13. {

    14. cout << "1 va 3 ning kattasi: " << maxValue(1, 3) << endl;



    15. cout << "1.5 va 0.3 ning kattasi: " "

    16. << maxValue (1.5, 0.3) << endl;

    17. cout << "‘A’ va ‘N’ ning kattasi: "

    18. << maxValue ('A', 'N') << endl;

    19. cout << " \"NBC\" va \"ABC\" ning kattasi: "

    20. << maxValue (string("NBC"), string("ABC")) << endl;

     

    21. return 0;



    22. }

    Natija:

    1 va 3 ning kattasi: 3

    1.5 va 0.3 ning kattasi: 1.5

    ‘A’ va ‘N’ ning kattasi: N

    "NBC" va "ABC" ning kattasi: NBC



     

    Funksiya shablonining aniqlanishi parametrlar ro`yxati tomonidan berilgan template – kalit so`zi bilan boshlanadi. Har bir parametr dastlab o`zaro teng kuchli bo`lgan typename yoki class kalit so`zi orqali, yoki  ko`rinishida beriladi. Masalan, 5-satrdagi



    template<typename T>

    maxValue uchun funksiya shablonining aniqlanishini boshlaydi. Shuningdek, bu satr prefiks shablon deb ham yuritiladi. Bu yerda T – parametr turi. Katta T harfining faqat parametr turini ifodalashda ishlatilishi kelishilgan.

    maxValue funksiyasi 6-12qatorlarda aniqlangan. Undan funksiya qaytaruvchi qiymat turi, funksiya parametrlari yoki funksiyada e’lon qilingan o`zgaruvchilarning turlarini aniqlashda foydalanish mumkin. Kodning 16-22-qatorlarida intdoublechar va string turlari bo`yicha katta qiymatlilarni qaytarish uchun maxValue funksiyasi chaqirilgan. Funksiya maxValue(1, 3) ko`rinishda chaqirilganda, kompilyator argument turi int ekanligini aniqlaydi va funksiyani aniq int turida chaqirish uchun, T – parametr turini int ga o`zgartiradi. Funksiya maxValue(string("NBC"), string("ABC")) ko`rinishda chaqirilganda, kompilyator argument turi string ekanligini aniqlaydi va funksiyani aniq string turida chaqirish uchun, T – parametr turini string ga o`zgartiradi.

    Agar 22-qatorda berilgan maxValue(string("NBC"), string("ABC")) ni maxValue("NBC", "ABC") deb o`zgartirsak nima bo`ladi? Unda biz funksiya ABC ni qaytarishini ko`rish uchun “syurpriz” tayyorlagan bo`lamiz. Nima uchun? Chunki “NBC” va “ABC” lar – C-satrlardir. maxValue("NBC", "ABC") ning chaqirilishi “NBC” va “ABC” larning manzillarini funksiya parametriga uzatadi. value1 > value2 taqqoslash vaqtida ikkita massivning manzillari taqqoslanadi, tarkiblari emas.




    Download 52,16 Kb.

    Do'stlaringiz bilan baham:
  • 1   2   3   4   5   6   7   8   9   10




    Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
    ma'muriyatiga murojaat qiling

    kiriting | ro'yxatdan o'tish
        Bosh sahifa
    юртда тантана
    Боғда битган
    Бугун юртда
    Эшитганлар жилманглар
    Эшитмадим деманглар
    битган бодомлар
    Yangiariq tumani
    qitish marakazi
    Raqamli texnologiyalar
    ilishida muhokamadan
    tasdiqqa tavsiya
    tavsiya etilgan
    iqtisodiyot kafedrasi
    steiermarkischen landesregierung
    asarlaringizni yuboring
    o'zingizning asarlaringizni
    Iltimos faqat
    faqat o'zingizning
    steierm rkischen
    landesregierung fachabteilung
    rkischen landesregierung
    hamshira loyihasi
    loyihasi mavsum
    faolyatining oqibatlari
    asosiy adabiyotlar
    fakulteti ahborot
    ahborot havfsizligi
    havfsizligi kafedrasi
    fanidan bo’yicha
    fakulteti iqtisodiyot
    boshqaruv fakulteti
    chiqarishda boshqaruv
    ishlab chiqarishda
    iqtisodiyot fakultet
    multiservis tarmoqlari
    fanidan asosiy
    Uzbek fanidan
    mavzulari potok
    asosidagi multiservis
    'aliyyil a'ziym
    billahil 'aliyyil
    illaa billahil
    quvvata illaa
    falah' deganida
    Kompyuter savodxonligi
    bo’yicha mustaqil
    'alal falah'
    Hayya 'alal
    'alas soloh
    Hayya 'alas
    mavsum boyicha


    yuklab olish