Содержание
- 2. Пространства имен Области действия и пространства имен Каждый программный объект имеет область действия и время жизни,
- 3. Пространства имен - функция; - файл; - группа файлов, в пределе включающая все файлы программного проекта
- 4. Пространства имен Функция. Программные объекты, определенные в блоке функции, имеют область действия и время жизни точно
- 5. Пространства имен Локальные объекты, объявленные в теле функции, действуют в пределах конкретного блока. Время жизни –
- 6. Пространства имен В этом случае переменные будут храниться в программном сегменте и время их жизни совпадает
- 7. Пространства имен Файл. Программный объект, определенный с описателем класса static вне любого блока, функции, класса, имеет
- 8. Пространства имен Но обратиться к нему можно через оператор разрешения области видимости -::. Класс. Компоненты класса
- 9. Пространства имен Пространства имен (именованные области). В С++ есть возможность явным образом задать область действия имен
- 10. Пространства имен Пространства имен Пространство имен (именованная область) служит для логического группирования определений, объявлений и ограничения
- 11. Пространства имен Общий формат объявления именованной области следующий: namespace [имя_области] { /* определения и объявления }
- 12. Пространства имен Продолжение именованных областей можно делать в различных файлах. Рассмотрим простой пример: namespace demo {
- 13. Пространства имен Дальнейшее расширение пространства namespace demo { // int i = 2; ошибка, повторное объявление
- 14. Пространства имен Нельзя получить доступ из именованной области одного файла к неименованной области другого файла. В
- 15. Пространства имен Такой прием обеспечивает разделение интерфейса и реализации. Объекты программы, определенные внутри пространства имен, становятся
- 16. Пространства имен Если какое-либо имя из именованной области используется часто, его можно сделать доступным с помощью
- 17. Пространства имен Если требуется открыть всю область видимости, используется оператор using namespace demo; Вспомните, например, using
- 18. Преобразования в стиле языка С++ Преобразования в стиле С++ При выполнении программы производятся явные и неявные
- 19. Преобразования в стиле языка С++ Простой пример: int var_int =22; double var_double = 3.45; // cout
- 20. Преобразования в стиле языка С++ В действительности такие преобразования не делаются, поскольку компилятор делает их автоматически.
- 21. Преобразования в стиле языка С++ Общий формат преобразования в стиле С следующий: тип(выражение); (тип)выражение; Необходимость в
- 22. Преобразования в стиле языка С++ Еще один пример – это переопределение операции new, которая всегда возвращает
- 23. Преобразования в стиле языка С++ Операция const_cast Эта операция служит для удаления модификатора const. Как правило
- 24. Преобразования в стиле языка С++ Общий формат операции следующий: const_cast (выражение) Обозначенный тип должен быть таким
- 25. Преобразования в стиле языка С++ Необходимость введения этой операции обусловлена тем, что программист, реализующий функцию, не
- 26. Преобразования в стиле языка С++ Рассмотрим пример: void func(int *arg) { cout } // const int
- 27. Преобразования в стиле языка С++ Еще один пример, более близкий к ООП: class Test { int
- 28. Преобразования в стиле языка С++ Объявим константный указатель на объект данного класса: const Test *ptr_Test =
- 29. Преобразования в стиле языка С++ Ошибку подобного рода можно избежать, объявив метод Out() как константный (безопасный):
- 30. Преобразования в стиле языка С++ Операция static_cast Операция static_cast используется на этапе компиляции между: - целыми
- 31. Преобразования в стиле языка С++ Формат операции: static_cast (выражение) Результат операции имеет указанный тип, который может
- 32. Преобразования в стиле языка С++ Например, float f = 100; int i = static_cast (f); Преобразования
- 33. Преобразования в стиле языка С++ Мы же рассмотрим пример преобразований в иерархии родственных классов, что для
- 34. Преобразования в стиле языка С++ Базовый класс: class Base { protected: int base; public: Base(){}; void
- 35. Преобразования в стиле языка С++ Производный класс: class Derived : public Base { int derived; public:
- 36. Преобразования в стиле языка С++ Рассмотрим несколько примеров преобразований между этими классами. Преобразования «вверх», то есть
- 37. Преобразования в стиле языка С++ Выражение Base base = der; вполне оправдано, хотя правильнее (понятней) была
- 38. Преобразования в стиле языка С++ Рассмотренное преобразование типа производного класса возможно, если производный класс описан с
- 39. Преобразования в стиле языка С++ Преобразования объектов производного класса к типу базового встречается на практике достаточно
- 40. Преобразования в стиле языка С++ Следует оговориться, что преобразования допустимы только уровне указателей или ссылок, но
- 41. Преобразования в стиле языка С++ Сработает функция производного класса и выведет «Derived class». А что будет
- 42. Преобразования в стиле языка С++ Такое объявление также допустимо, указатель на базовый класс инициализируется значением указателя
- 43. Преобразования в стиле языка С++ Операция dynamic_cast Эта операция используется в основном для преобразования указателей и
- 44. Преобразования в стиле языка С++ Несложно догадаться, что преобразования будут выполняться в период выполнения программы. Общий
- 45. Преобразования в стиле языка С++ В случае успешного выполнения операции формируется результат заданного типа, в противном
- 46. Преобразования в стиле языка С++ Операция reinterpret_cast Операция reinterpret_cast применяется для преобразования не связанных между собой
- 47. Преобразования в стиле языка С++ Рассмотрим пример: struct Struct { int str_int; string str_string; Struct(int s_i,
- 48. Преобразования в стиле языка С++ Далее использование объекта этого типа через указатель на тип void *
- 49. Преобразования в стиле языка С++ Практическое использование этого оператора при форматированном вводе-выводе числовых величин. #include #include
- 50. Преобразования в стиле языка С++ // создаем выходной поток ofstream os(“data.dat”, ios::binary); // записываем в него
- 52. Скачать презентацию