Содержание
- 2. Преобразования в стиле языка С++ Операция static_cast Операция static_cast используется на этапе компиляции между: - целыми
- 3. Преобразования в стиле языка С++ Формат операции: static_cast (выражение) Результат операции имеет указанный тип, который может
- 4. Преобразования в стиле языка С++ Например, float f = 100; int i = static_cast (f); Преобразования
- 5. Преобразования в стиле языка С++ Мы же рассмотрим пример преобразований в иерархии родственных классов, что для
- 6. Преобразования в стиле языка С++ Базовый класс: class Base { protected: int base; public: Base(){}; void
- 7. Преобразования в стиле языка С++ Производный класс: class Derived : public Base { int derived; public:
- 8. Преобразования в стиле языка С++ Рассмотрим несколько примеров преобразований между этими классами. Преобразования «вверх», то есть
- 9. Преобразования в стиле языка С++ Выражение Base base = der; вполне оправдано, хотя правильнее (понятней) была
- 10. Преобразования в стиле языка С++ Рассмотренное преобразование типа производного класса возможно, если производный класс описан с
- 11. Преобразования в стиле языка С++ Преобразования объектов производного класса к типу базового встречается на практике достаточно
- 12. Преобразования в стиле языка С++ Следует оговориться, что преобразования допустимы только уровне указателей или ссылок, но
- 13. Преобразования в стиле языка С++ Сработает функция производного класса и выведет «Derived class». А что будет
- 14. Преобразования в стиле языка С++ Такое объявление также допустимо, указатель на базовый класс инициализируется значением указателя
- 15. Преобразования в стиле языка С++ Операция dynamic_cast Эта операция используется в основном для преобразования указателей и
- 16. Преобразования в стиле языка С++ Несложно догадаться, что преобразования будут выполняться в период выполнения программы. Общий
- 17. Преобразования в стиле языка С++ В случае успешного выполнения операции формируется результат заданного типа, в противном
- 18. Преобразования в стиле языка С++ Операция reinterpret_cast Операция reinterpret_cast применяется для преобразования не связанных между собой
- 19. Преобразования в стиле языка С++ Рассмотрим пример: struct Struct { int str_int; string str_string; Struct(int s_i,
- 20. Преобразования в стиле языка С++ Далее использование объекта этого типа через указатель на тип void *
- 21. Преобразования в стиле языка С++ Практическое использование этого оператора при форматированном вводе-выводе числовых величин. #include #include
- 22. Преобразования в стиле языка С++ // создаем выходной поток ofstream os(“data.dat”, ios::binary); // записываем в него
- 23. Преобразования в стиле языка С++ В данном случае использование оператора reinterpret_cast вполне оправдано, поскольку его действие
- 24. Обработка исключительных ситуаций Исключительная ситуация или исключение – это возникновение непредвиденной или аварийной события, которое может
- 25. Обработка исключительных ситуаций Ошибку в программе следует рассматривать как частный случай исключительной ситуации. Если не использовать
- 26. Обработка исключительных ситуаций Общий механизм обработки исключений Формат программного кода, в котором может произойти ошибка, должен
- 27. Обработка исключительных ситуаций Обработка исключительной ситуации реализуется следующим образом: 1. Обработка исключения начинается с проверки появления
- 28. Обработка исключительных ситуаций Параметр исключения может быть константой, переменной, или объявлением класса и используется для передачи
- 29. Обработка исключительных ситуаций 3. Если обработчик исключения не найден, вызывается стандартная функция terminate(), которая в свою
- 30. Обработка исключительных ситуаций Синтаксис исключений Служебное слово try предназначено для обозначения контролируемого блока – кода, в
- 31. Обработка исключительных ситуаций Блок содержит последовательность операторов, включая вызовы функций, которые проверяются на возникновение исключения. Такой
- 32. Обработка исключительных ситуаций Генерация исключения происходит по служебному слову throw, которое используется либо с выражением, либо
- 33. Обработка исключительных ситуаций Тип выражения, стоящего после throw, определяет тип порождаемого исключения. Тип может быть стандартным
- 34. Обработка исключительных ситуаций При необходимости try-блоки могут вкладываться друг в друга. В этом случае исключение передается
- 35. Обработка исключительных ситуаций Синтаксис обработчиков напоминает определение функции с одним параметром – типом исключения. Существует три
- 36. Обработка исключительных ситуаций // формат 2 catch( тип ) { // тело обработчика } // формат
- 37. Обработка исключительных ситуаций Первый формат применяется, когда имя параметра используется в теле обработчика для выполнения каких-либо
- 38. Обработка исключительных ситуаций Обычно обработчики по третьему формату записывают в самую последнюю очередь, то есть «
- 39. Обработка исключительных ситуаций 1. Создается копия выражение - параметра из throw в виде статического объекта, который
- 40. Обработка исключительных ситуаций 3. Передается статический объект (копию выражения из throw) и передается управление обработчику, имеющему
- 41. Обработка исключительных ситуаций - является производным от указанного в параметре catch (если наследование производилось с ключом
- 42. Обработка исключительных ситуаций *Простой пример: int main() { int d, m; double dp; try { cout
- 43. Обработка исключительных ситуаций catch(int e) { cout } return 0; }
- 44. Обработка исключительных ситуаций Более сложный пример. Рассмотрим класс. class Hello { public: Hello() { cout ~Hello()
- 45. Обработка исключительных ситуаций И две функции: void func_1() { ifstream ifs("\\INVALID\\FILE\\NAME"); if(!ifs) { cout throw "
- 46. Обработка исключительных ситуаций void func_2() { Hello H; // Вызов функции, генерирующую исключение func_1(); }
- 47. Обработка исключительных ситуаций int main() { try { func_2(); cout } catch(const char *s) { cout
- 48. Обработка исключительных ситуаций catch( ... ) { cout return 20; } return 0; }
- 49. Обработка исключительных ситуаций
- 50. Обработка исключительных ситуаций
- 51. Обработка исключительных ситуаций
- 52. Обработка исключительных ситуаций
- 53. Обработка исключительных ситуаций
- 54. Обработка исключительных ситуаций
- 55. Обработка исключительных ситуаций
- 57. Скачать презентацию