|
Программирование >> Расширенная версия языка c++
Приложение В. Ответы на вопросы и решение нешй Проверка усвоения материала главы 12 1. Оператор typeid возвращает ссылку на объект класса type info, содержащего информацию о типе, 2. Для использования оператора typeid в программу необходимо включить заголовок <typeinfo>. 3. Ниже представлены новые операторы приведения типов. Оператор Назначение dynamic cast Выполняет операцию приведения полиморфных типов reinterpret cast Преобразует указатель на один тип в указатель на другой тип staticcast Выполняет операцию обычного приведения типов consCcast , Лишает объект бута const 4. #include <iostreain> #include <typeinfo> using namespace std; class A { virtual void f{) class B: public A { }; class C: public В { int main A *p, a ob; В b ob; С c ob; cout Введите О для объектов типа А, cou << 1 для объектов типа В или ; cou 2 для объектов типа С.\п ; ci>> i ; if (i==l)p = fib ob; else if (i==2) p = Sc ob; У, else p 640 Самоучитель €+ + if (typeid (*р) == typeid(A)) - j, . -.Г- cou Объект A ; > - . - . . i- if (typeid(*pl == typeid(B)) cout Объект В ; ;- ! if(typeid(*p) == typeid(C]) cout Объект С ; .. , - . , - return 0; 5. Оператор typeid можно заменить операторов mic cast в ситуациях, когда оператор typeid используется для проверки правильности выполнения операции приведения полиморфнхх типов. 6. Оператор typeid возвращает ссхлку на объект типа type info. Проверка усвоения материала в целом 1. Здесь представлена версия функции genera (), в которой для контроля за выделением памяти используется механизм обработки исключительных ситуаций. /* Использование механизма обработки исключительных ситуаций для отслеживания ошибок выделения памяти V i . о : г Sliape *generator() ..... , J;OSi try I . I. .-чт-г ; -.г.; \l Л switch{rand{) % 4) I case 0: . return new Line; case 1: return new Rectangle; ,. case 2: return new Triangle; , : ; case 3: return new NullShape; . . catch (bad alloc ba) I Kl: - return NULL; . . return NULL; 2. Ниже представлена версия функции tor(), в которой используется оператор new(nothrow). Приложение В. Ответы на вопросы и решения упражнений 641 Использование оператора new (nothrow) Shape *generator() I Shape *temp; switch(rand 0 % 4) / case 0: return throw) Line; case 1: return new(nothrow) Rectangle; case 2: return new(nothrow) Triangle; case 3: return new(nothrow) NulIShape; if(temp) return temp; else return NULL; ГЛАВА 13 Повторение пройденного 1. Помимо обычных для языка С операторов приведения типов, в C++ поддерживаются дополнительные операторы, которые перечислены ниже: Оператор Назначение dynamiccast Выполняет операцию приведения полиморфных типов reinterpret cast Преобразует указатель на один тип мтель на другой тип staticcast Выполняет операцию обычного приведения типов constcast Лишает объекты атрибута const 2. Класс type info - это класс, который инкапсулирует информацию о типе данных. Ссылка на объект типа type uifo является возвращаемым значением оператора typeid. 3. С помощью оператора typeid. 4. if(typeid(Derived) == typeid(p*)) cou Указатель р указывает на объект класса Derived\n ; else cou <,< Указатель р указывает на объект класса ВазеХп ;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |