🗊 Презентация Приведение типа

Категория: Образование
Нажмите для полного просмотра!
Приведение типа, слайд №1 Приведение типа, слайд №2 Приведение типа, слайд №3 Приведение типа, слайд №4 Приведение типа, слайд №5 Приведение типа, слайд №6 Приведение типа, слайд №7 Приведение типа, слайд №8 Приведение типа, слайд №9 Приведение типа, слайд №10 Приведение типа, слайд №11 Приведение типа, слайд №12 Приведение типа, слайд №13 Приведение типа, слайд №14 Приведение типа, слайд №15 Приведение типа, слайд №16 Приведение типа, слайд №17 Приведение типа, слайд №18

Вы можете ознакомиться и скачать презентацию на тему Приведение типа. Доклад-сообщение содержит 18 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Тема: Приведение типа Использование конструкторов для приведения типа Операция приведения типа Приведение типа для значения, указателя и ссылки
Описание слайда:
Тема: Приведение типа Использование конструкторов для приведения типа Операция приведения типа Приведение типа для значения, указателя и ссылки

Слайд 2


Приведение типа в С++ Не влияет на приводимый объект Генерируется временный анонимный объект требуемого типа и тем же значением Анонимный объект...
Описание слайда:
Приведение типа в С++ Не влияет на приводимый объект Генерируется временный анонимный объект требуемого типа и тем же значением Анонимный объект может быть в стеке или в регистре соответствующего типа Действия компилятора выделение памяти для анонимной переменной инициализация анонимной переменной использование анонимной переменной

Слайд 3


Упрощенный пример Приведение типа обеспечивается генерацией компилятором кода, содержание которого соответствует следующему примеру Пример float fun(...
Описание слайда:
Упрощенный пример Приведение типа обеспечивается генерацией компилятором кода, содержание которого соответствует следующему примеру Пример float fun( int i , int j ) { return (float) i / j ; } // компилятор генерирует float fun( int i , int j ) { float temp_i = i , temp_j = j ; return temp_i / temp_j ; }

Слайд 4


Приведение к типу класса Обеспечивает конструктор с одним параметром Пример
Описание слайда:
Приведение к типу класса Обеспечивает конструктор с одним параметром Пример

Слайд 5


Приведение к типу String
Описание слайда:
Приведение к типу String

Слайд 6


Упрощение класса String
Описание слайда:
Упрощение класса String

Слайд 7


Преобразование типа не происходит для вызывающего объекта
Описание слайда:
Преобразование типа не происходит для вызывающего объекта

Слайд 8


Конструкторы и передача аргументов
Описание слайда:
Конструкторы и передача аргументов

Слайд 9


Неоднозначности Правила разрешения ссылок точное соответствие типа аргументов тривиальные преобразования типа (type[]type*, typeconst type) или...
Описание слайда:
Неоднозначности Правила разрешения ссылок точное соответствие типа аргументов тривиальные преобразования типа (type[]type*, typeconst type) или преобразования с повышением точности (charint, shortint, floatdouble, doublelong double и т.п.) стандартные преобразования (intdouble, doubleint, type*void*, intunsigned, unsigned  int и т.п.) преобразования, определенные пользователем неконтролируемое количество и тип аргументов (…) Если есть несколько возможных вариантов, то неоднозначность разрешается явным приведением типа

Слайд 10


Пример неоднозначности
Описание слайда:
Пример неоднозначности

Слайд 11


Операция преобразования типа Проблема преобразования типа класса в другой тип Пример String s=“Пробная строка” ; strlen(s); // ошибка Проблема...
Описание слайда:
Операция преобразования типа Проблема преобразования типа класса в другой тип Пример String s=“Пробная строка” ; strlen(s); // ошибка Проблема преобразования в другой пользовательский тип (м.б. решена конструктором того типа, но не всегда) Преобразование во встроенный тип – операция приведения типа operator ()

Слайд 12


Пример Пример, как не надо String::operator char* ( ) { return text; } Опасно! String s ; char very_big_array [1000] ; strcpy( s , very_big_array ) ;...
Описание слайда:
Пример Пример, как не надо String::operator char* ( ) { return text; } Опасно! String s ; char very_big_array [1000] ; strcpy( s , very_big_array ) ; // будет худо ! Пример, как надо String::operator const char* () const { return text; } Безопасно String s ; char very_big_array [1000] ; strcpy(s , very_big_array ) ; // ошибка компилятора

Слайд 13


Пересмотренный класс String
Описание слайда:
Пересмотренный класс String

Слайд 14


Еще раз о неоднозначностях
Описание слайда:
Еще раз о неоднозначностях

Слайд 15


Вместо преобразования типа Перегрузка операции преобразования типа требует большой осторожности включает для типа механизм неявных преобразований по...
Описание слайда:
Вместо преобразования типа Перегрузка операции преобразования типа требует большой осторожности включает для типа механизм неявных преобразований по правилам С/С++ может порождать при компиляции неоднозначности Использование обычного метода класса не так красиво, с т.з. синтаксиса но безопасно с т.з. неявных преобразований Например, если требуется иметь возможность использовать объект типа String там, где требуется char* , то это можно сделать так:

Слайд 16


Пример для класса String
Описание слайда:
Пример для класса String

Слайд 17


Преобразование указателей и ссылок Преобразования типа объекта преобразует объект создает временный объект не может нарушить целостности самого...
Описание слайда:
Преобразование указателей и ссылок Преобразования типа объекта преобразует объект создает временный объект не может нарушить целостности самого объекта float f_var = 3.14; printf(“%d”, (int) f_var); Преобразование указателя или ссылки не преобразует объект создается временный указатель (а не объект) изменяется трактовка содержимого объекта (памяти) противоречит принципу инкапсуляции (требуется знать внутреннее представление объекта в памяти) printf(“%d”, *((int*) &f_var) ); printf(“%d”, (int&) f_var);

Слайд 18


РЕЗЮМЕ Средства приведения типа необходимы в языках со строгой типизацией Позволяет уменьшить набор методов класса, но за счет повышение косвенности...
Описание слайда:
РЕЗЮМЕ Средства приведения типа необходимы в языках со строгой типизацией Позволяет уменьшить набор методов класса, но за счет повышение косвенности вызовов В классах С++ приведение типа управляется конструктором с одним параметром операцией приведения типа приведение типа можно запретить Активное включение средств приведения типа в классы может приводить к неоднозначности Неоднозначность может быть снята указанием явных преобразований типов



Похожие презентации
Mypresentation.ru
Загрузить презентацию