1-ma’ruza. Noma'lum nomlarning noma'lum turlari va maydoni Ma’ruza rejasi


type_info sinfida quyidagi sinf a'zolari aniqlangan. bool operator = (const type_info &ob)



Yüklə 63,61 Kb.
səhifə2/9
tarix17.03.2023
ölçüsü63,61 Kb.
#88450
1   2   3   4   5   6   7   8   9
1-mavzu

    Bu səhifədəki naviqasiya:
  • Base ob
type_info sinfida quyidagi sinf a'zolari aniqlangan.


bool operator = (const type_info &ob);
bool operator !=(const type_info &ob);
bool before(const type_info &ob);
const char *name();

Qayta yuklangan solishtirish operatorlar "= = "va"!= "turlarini solishtirish uchun ishlatiladi. typeid operatoridan foydalanishning oddiy misolini ko'rib chiqamiz:


// typeid operatoridan foydalanish misoli.
#include
#include

using namespace std;


class myclass {


// . . .
};
int main()
{
int i, j;
float f;
myclass ob;
cout << " Argumentlar turi i:"<< typeid(i).name();
cout << endl;
cout < < " Argumentlar turi f:" << typeid(f).name();
cout << endl;
cout < < " Argumentlar turi ob:" << typeid(ob).name();
cout << "\n\n";
if(typeid(i) == typeid(j))
cout <<”\n i va j o'zgaruvchilari bir xil."<if(typeid(i) != typeid(f))
cout <”\n i va f o'zgaruvchilari turlari bir xil emas.";
return 0;
}
Ushbu dasturni amalga oshirishda bunday natijalar olingan.
Argumentlar turi i: int
Argumentlar turi f: float
Argumentlar turi ob: sinf sinf sinf sinf
i va j o'zgaruvchilari bir xil.
i va f o'zgaruvchilari turlari bir xil emas.
typeid operatorini ko’proq merosxo’r sinflar bilan, poliform, virtual va shablon fynktsiyalar bilan ish yuritishni ko’rsatkichlar yoki havolalar orqali tashkil qilganda ishlatish bit muncha qulaylik yararadi. Ya’ni typeid orqali ko’rsatkich ko’rsatayotgan real ob’ektning turini aniqlab olishimis mumkin.
Keyingi misolda odin standart tipga ega bo’lgan o’zgaruvchini tipini aniqlaymiz, keyin asos sinf va meros simf ob’ektlariga ko’rsatayotgan k’rsatkich orqali ob’ektlarni tipini aniqlaymiz.

/ * typeid operatorini polimorf sinflarning ierarxiyasiga qo'llash misoli.*/


#include
#include
using namespace std;
class Base {
virtual void f () {}; / / base sinfini polimorf qilish
// . . .
};
class Derived1: public Base {
// . . .
};
class Derived2: public Base {
// ...
};
int main(){
Base *p, baseob;
Derived1 ob1;
Derived2 ob2;
p= &baseob;
cout < "\n Ob`ekt tipi - ";
cout << typeid(*p).name() << endl;
p = &ob1;
cout < "\n Ob`ekt tipi - ";
cout << typeid(*p).name() << endl;
p = &ob2;
cout < "\n Ob`ekt tipi - ";
cout << typeid(*p).name() << endl;
return 0;}
Ushbu dasturning natijalari quyidagicha:

Ob`ekt tipi - Base


Ob`ekt tipi - Derived1
Ob`ekt tipi - Derived2
Quyida berilgan misolda typeid() operatori yordamida whattype() funktsiyasiya parametri sifatida qaysi sinfga mansub ob’ekt uzatlganini (foyadalanuvchi tipini) real vaqtda aniqlab, ekranga chop etamiz:
/ *
typeid operatorini mos yozuvlar parametriga qo'llash.*/

#include


#include

using namespace std;


class Base {


virtual void f () {}; / / base sinfini polimorf qilish
// . . .
};
class Derived1: public Base {
// . . .
};
class Derived2: public Base {
// . . .
};

/ * Biz typeid() operatordan foydalanishni namoyish qilamiz*/


void WhatType(Base &ob)


{
cout <”\n ob parametrining tipi - ";
cout << typeid(ob).name() << endl;
}

int main()


{
int i;
Base baseob;
Derived1 obi;
Derived2 ob2;
WhatType(baseob);
WhatType(ob1);
WhatType(ob2);
return 0;
}

Ushbu dastur bunday natijalarni ishlab chiqaradi.


ob parametrining tipi – Base


ob parametrining tipi - Derived1
ob parametrining tipi – Derived2

Operator typeid qo'llash yana bir turi bor, argument sifatida o’zgaruvchi nomini o’rniga C++ tilinig acosiy turlaridan birinig nomi ko’rsatiladi. Uning formati shunday.



Yüklə 63,61 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin