Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Операция typeid



Для получения информации о типе во время выполнения программы применяется операция typeid:

typeid(имя_ типа) typeid(выражение)

Ее операндом является либо имя типа, либо выражение, оцениваемое как некоторый тип. Операция возвращает константную ссылку на объект класса type_info, объявленный в заголовке typeinfo.h.

Открытые элементы класса представлены операциями сравнения на равенство и неравенство, а также функциями name() и before(). Первая возвращает указатель на символьную строку с именем типа. Вторая возвращает true, если класс ее объекта является базовым по отношению к классу аргумента.

Если операция не может определить тип своего операнда, она выбрасывает исключение типа bad_typeid.

#include <typeinfo.h>#include <iostream.h>template <class T1, class T2>void f(T1 p1, T2 p2){ cout<<"p1="<<p1<<" Type - "<<typeid(p1).name()<<endl; cout<<"p2="<<p2<<" Type - "<<typeid(p2).name()<<endl; if (typeid(p1)==typeid(p2)) cout<<"Types are equivalent"<<endl; else cout<<"Types are not equivalent"<<endl;}int main(int argc, char* argv[]){ f(6, 6.2); f(6, 6); getchar(); return 0;}

Программа выводит:

p1=6 Type - intp2=6.2 Type - doubleTypes are not equivalentp1=6 Type - intp2=6 Type - intTypes are equivalent




Дата публикования: 2015-01-13; Прочитано: 231 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...