Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Для получения информации о типе во время выполнения программы применяется операция 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!