#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: “ << typeid(i).name()< cout<<“Tip argumenta r: “ << typeid(r).name()< cout<<" Tip argumenta d: “ << typeid(d).name()< if(typeid(i)==typeid(j)) cout<<“i, j odinakogo tipa"< if(typeid(i)!=typeid(r)) cout<<"i, r raznogo tipa "< system("Pause"); return 0; } Результать программы Tip argumenta i:int Tip argumenta r:float Tip argumenta d: class doctor i, j odinakogo tipa Для продолжения нажмите любую клавишу . . . Пример использования оператора typeid #include "stdafx.h" #include #include using namespace std; template class myclass { T a; public: myclass(T i) { a = i; } }; int main() { setlocale(LC_ALL,"rus"); myclass o1(10), o2(9); myclass o3(7.2); cout<<"Объект o1 имеет тип "; cout< cout<<"Объект o2 имеет тип "; cout< cout<<"Объект o3 имеет тип "; сout< Продолжение примера if(typeid(o1) == typeid(o2)) { cout<<"Объекты o1 и o2“; cout<<"имеют одинаковый тип. " cout<<"\n"; } if(typeid(o1) == typeid(o3)) cout << "Ошибка\n"; else { cout << "Объекты o1 и o3 "; cout<<“имеют разные типы. "; cout< getch(); return 0; } Результать программы Объект o2 имеет тип class myclass Объект o3 имеет тип class myclass Объекты o1 и o2 имеют одинаковый тип. Объекты o1 и o3 имеют разные типы. Для продолжения нажмите любую клавишу . . . Операторы приведения типов. Статическое приведение static_cast Преобразование «родственных» типов. float f = static_cast < float > ( d ); float * pf2 = static_cast( static_cast (pd) ); «Слепое» приведение reinterpret_cast Преобразование с сохранением битового представления, невыполнимое явно или при помощи static_cast float * pf = reinterpret_cast( pd ); float h = *reinterpret_cast( &d ); Примеры явного С++ приведения Оператор const_cast Снятие квалификаторов const и volatile int d = static_cast < int >( 7.5 ); int const * cpd = &d ; int * pd = const_cast < int * >( cpd ); Оператор dynamic_cast Нисходящее преобразование при наследовании / /dynamic_cast # include < iostream > using name space std ; class Base { public: virtual void f() { } }; class Derived : public Base { public: void f() { } }; Оператор dynamic_cast Продолжение примера
int main ( ) {
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 (определён в файле typeinfo.h). Оператор typeid возвращает ссылку на структуру type_info, которая содержит поля, позволяющие получить информацию о типе. Заключение Для явного переобразование типов применяются операторы : - static_cast
- reinterpret_cast
- const_cast
- dynamic_cast
СПАСИБО ЗА ВНИМАНИЕ!
САФАРОВА МАФТУНА
АССИСТЕНТ
КАФЕДРА ОСНОВЫ
ИНФОРМАТИКИ
ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ
ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛ-ХОРАЗМИЙ
Do'stlaringiz bilan baham: |