Старший преподаватель кафедры основы информатики


Преобразование типов переменных



Download 2,26 Mb.
bet8/8
Sana23.03.2023
Hajmi2,26 Mb.
#921054
1   2   3   4   5   6   7   8
Bog'liq
1-тема Программирование II NP

Преобразование типов переменных


2

Пример

  • / /dynamic_cast
  • # include < iostream >
  • using name space std ;
  • class Base {
  • public: virtual void f() { } };
  • class Derived : public Base {
  • public: void f() { } };
  • int main ( )
  • {
  • Base * bp, b_ob;
  • Derived * dp, d_ob;

Base * bp, b_ob;
Derived * dp, d_ob;
bp = dynamic_cast< Base *> (&d_ob);
if(bp) {
cout << "Derived pereshol -> Base \n";
bp -> f();
}
else
cout << "Error\ n ";
system("pause");
return 0;
}

Получения типа объекта во время выполнения программы


Чтобы получить тип объекта во время выполнения :

typeid(object)

Параметр означает объект, тип которого нужно получить.


Оператор возвращает ссылку на объект типа type_infо, который описывает тип объекта object.
Нужно подключить!
#include

Получения типа объекта во время выполнения программы


В классе type_info определены следующие public-члены
Классе type_info
bool operator == (const type_info &ob);
bool operator !=(const type_info &ob);
const char *name();
bool before(const type_info &ob);
функция предназначена в для внутреннего использования.

Пример использования оператора typeid


#include "stdafx.h"
#include
#include
using namespace std;
class doctor
{ private:
char professiya[35];
char F_I_O[25];
public:
int staj; };

Пример использования оператора typeid


int main()
{ int i,j; float r; doctor d;
cout<<"Tip argumenta i:"<cout<<"Tip argumenta r:"<cout<<" Tip argumenta d:"<if(typeid(i)==typeid(j))
cout<<“Peremennie i, j odinakogo tipa"<if(typeid(i)!=typeid(r))
cout<<" Peremennie i, r raznogo tipa "<system("Pause");
return 0; }

Результать программы


Tip argumenta i:int
Tip argumenta r:float
Tip argumenta d: class doctor
Peremennie i, j odinakogo tipa
Peremennie i, r raznogo tipa
Для продолжения нажмите любую клавишу . . .

Пример использования оператора typeid


#include "stdafx.h"
#include
#include
using namespace std;
template
class myclass {
T a;
public:
myclass(T i) { a = i; }
};

Пример использования оператора typeid


int main()
{
setlocale(LC_ALL,"rus");
myclass o1(10), o2(9);
myclass o3(7.2);
cout << "Объект o1 имеет тип ";
cout << typeid(o1).name() << endl;
cout << "Объект o2 имеет тип ";
cout << typeid(o2).name() << endl;

Пример использования оператора typeid


int main()
{…
cout << "Объект o3 имеет тип ";
cout << typeid(o3).name() << endl;
cout << endl;
if(typeid(o1) == typeid(o2))
cout << "Объекты o1 и o2 имеют одинаковый тип.\n";
if(typeid(o1) == typeid(o3)) cout << "Ошибка\n";
else cout << "Объекты o1 и o3 имеют разные типы.\n";
getch();
}

Результать программы


Объект o1 имеет тип class myclass
Объект o2 имеет тип class myclass
Объект o3 имеет тип class myclass
Объекты o1 и o2 имеют одинаковый тип.
Объекты o1 и o3 имеют разные типы.
Для продолжения нажмите любую клавишу . . .

Заключение

  • В C++ для динамической идентификации типов применяются операторы dynamic_cast и typeid (определён в файле typeinfo.h), для использования которых информацию о типах во время выполнения обычно необходимо добавить через опции компилятора при компиляции модуля.
  • Оператор typeid возвращает ссылку на структуру type_info, которая содержит поля, позволяющие получить информацию о типе.
  • Пространство имён является механизмом отражения логического группирования идентификаторов. Если некоторые объявления можно объединить по какому-либо критерию, это можно отразить явным размещением их в одном пространстве имён.

Творческих Вам успехов!


ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛ-ХОРАЗМИЙ
АБДУРАХМАНОВ АББАС АБДУСАТТАРОВИЧ
СТАРШИЙ ПРЕПОДАВАТЕЛЬ КАФЕДРЫ ОСНОВЫ ИНФОРМАТИКИ
СПАСИБО ЗА ВНИМАНИЕ!

Download 2,26 Mb.

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




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