• 1.1-dastur.
  • 1.1-jadval.
  • Tiplarni dinamik tarzda




    Download 1,92 Mb.
    bet2/131
    Sana16.06.2024
    Hajmi1,92 Mb.
    #264063
    1   2   3   4   5   6   7   8   9   ...   131
    Bog'liq
    Tiplarni dinamik tarzda

    bool operator == (const type_info &ob); bool operator !=(const type_info &ob);
    bool before(const type_info &ob); const char *name();
    Bunda qayta aniqlangan (overloaded) operatorlari [==] va [!=] tiplarini taqqoslash uchun ishlatiladi. Chaqiruvchi obʻyekt parametr sifatida ishlatiladigan obʻyekt (element ob) oldida ketma-ketlik tartibida bo‘lsa before() funksiyasi true qaytaradi. Bu funksiya asosan ichki foydalanish uchun mo‘ljallangan. Uning natija qiymati merosxo‘r yoki sinf iyerarxik bilan hech qanday aloqasi yo‘q. name() funksiyasi tip nomiga ko‘rsatkich qaytadi.
    typeid operatoridan foydalanishga bir misol keltiramiz.

    1.1-dastur. Tiplarni taqqoslash1


    #include "stdafx.h" #include #include using namespace std; class myclass {
    // . . .
    };
    int main(){ int i, j; float f; myclass ob;
    cout << "i oʻzgaruvchi tipi: " << typeid(i).name()<cout << "ob oʻzgaruvchi tipi: " << typeid(ob).name()<cout << " i va j tiplar bir xil.\n"; if(typeid(i) != typeid(f))
    cout << " i va f tiplar bir xil emas.\n"; system("PAUSE");
    return 0;}
    1.1 dastur natijasi. Output
    i oʻzgaruvchi tipi: int f oʻzgaruvchi tipi: float
    ob oʻzgaruvchi tipi: class myclass i va j tiplar bir xil.i va f tiplar bir xil emas
    1.1-dastur tahlili. Dasturda int tipiga oid i va j, float tipida f, myclass tipida ob o‘zgaruvchilari aniqlangan. typeinfo kutubxonasining typeid().name() metodi bilan ularning tiplari aniqlangan. Taqqsolash operatorlari bilan o‘zraguvchilarning

    1 Дастур Visual C++ муҳитида тузилган.
    tiplari tekshirilgan va natijalar ekranga chiqarilgan. Bu esa tiplar bo‘yicha dastlabki ishlov berish uchun lozim.
    1.1-jadval. Type_info sinf aʻzolari va vazifalari



    Funksiya
    nomi

    vazifasi

    1

    (constructor)

    Sinfda standart va nusxa konstruktori mavjud emas.

    2

    (destructor)
    [virtual]

    xavfsiz tayanch sinf uchun pointer orqali obʻyektni o‘chirish
    mumkin (virtual funksiyasi)

    3

    operator=

    O‘zlashtirish amalidan foydalanib ko‘chirib bo‘lmaydi

    4

    operator==
    operator!=

    Obʻyektlar bir xil tipgaligini taqqoslashydi
    (public funksiya)

    5

    before

    Joriy tipdagi boshqa type_index obʻyekt tomonidan nusxasi tipini bor yoki yo‘qligini tekshiradi. Obʻyektlar, aniqrog‘i tiplari, amalga oshirilishi belgilangan tartibda tashkil etiladi.
    (public funksiya)

    6

    hash_code

    Joriy tipga mos keladigan tiplarni qaytaradi
    (public funksiya)

    7

    name

    Joriy tipning aniqlangan nomini qaytaradi.
    (public funksiya)

    Typeid operatori polimorf tayanch sinf uchun ko‘rsatkich sifatida qo‘llaniladigan bo‘lsa (eslabtib o‘tamiz, polimorf sinf kamida bitta virtual funksiyani o‘z ichiga olgan sinfga aytiladi), u avtomatik ravishda real obʻyekt tipini qaytaradi va u asossidan olingan sinf tayanch sinf obʻyekt yoki obʻyekt emasligini ham ko‘rsatadi.


    Shuning uchun typeid operatoridan asos sinfga ko‘rsatgich bilan murojaat qilingan obʻyekt tipini dinamik ravishda aniqlash uchun foydalanish mumkin. Bu xususiyat quyidagi dasturda ko‘rsatilgan.

    Download 1,92 Mb.
    1   2   3   4   5   6   7   8   9   ...   131




    Download 1,92 Mb.