🗊 Презентация Приведение типов и контейнеры

Категория: Образование
Нажмите для полного просмотра!
Приведение типов и контейнеры, слайд №1 Приведение типов и контейнеры, слайд №2 Приведение типов и контейнеры, слайд №3 Приведение типов и контейнеры, слайд №4 Приведение типов и контейнеры, слайд №5 Приведение типов и контейнеры, слайд №6 Приведение типов и контейнеры, слайд №7 Приведение типов и контейнеры, слайд №8 Приведение типов и контейнеры, слайд №9 Приведение типов и контейнеры, слайд №10 Приведение типов и контейнеры, слайд №11 Приведение типов и контейнеры, слайд №12 Приведение типов и контейнеры, слайд №13 Приведение типов и контейнеры, слайд №14 Приведение типов и контейнеры, слайд №15 Приведение типов и контейнеры, слайд №16 Приведение типов и контейнеры, слайд №17 Приведение типов и контейнеры, слайд №18 Приведение типов и контейнеры, слайд №19 Приведение типов и контейнеры, слайд №20 Приведение типов и контейнеры, слайд №21 Приведение типов и контейнеры, слайд №22 Приведение типов и контейнеры, слайд №23 Приведение типов и контейнеры, слайд №24 Приведение типов и контейнеры, слайд №25 Приведение типов и контейнеры, слайд №26 Приведение типов и контейнеры, слайд №27 Приведение типов и контейнеры, слайд №28 Приведение типов и контейнеры, слайд №29 Приведение типов и контейнеры, слайд №30 Приведение типов и контейнеры, слайд №31 Приведение типов и контейнеры, слайд №32 Приведение типов и контейнеры, слайд №33

Содержание

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

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


Слайд 1


Преобразования типов в С В языке С явное приведение типов осуществлялось при заключении типа в круглые скобки, так называемое "приведение в...
Описание слайда:
Преобразования типов в С В языке С явное приведение типов осуществлялось при заключении типа в круглые скобки, так называемое "приведение в круглых скобках" Например, преобразование double --> int:

Слайд 2


Преобразования типов в С++ В С++ дополнительно ввели именованные операторы преобразования типов:
Описание слайда:
Преобразования типов в С++ В С++ дополнительно ввели именованные операторы преобразования типов:

Слайд 3


Преобразование const_cast () Оператор const_cast, как и следует из его имени, позволяет убрать или добавить константность:
Описание слайда:
Преобразование const_cast () Оператор const_cast, как и следует из его имени, позволяет убрать или добавить константность:

Слайд 4


Преобразование const_cast () - пример Предположим, что мы хотим в массиве типа A определена функция Get, возвращающая в виде константы i-ый объект из...
Описание слайда:
Преобразование const_cast () - пример Предположим, что мы хотим в массиве типа A определена функция Get, возвращающая в виде константы i-ый объект из массива A и описываемая так:

Слайд 5


Преобразование reinterpret_cast () Оператор reinterpret_cast предназначен для приведения друг к другу указателей, которые друг от друга не зависят:...
Описание слайда:
Преобразование reinterpret_cast () Оператор reinterpret_cast предназначен для приведения друг к другу указателей, которые друг от друга не зависят: кроме того , с его помощью можно преобразовать любой целочисленный тип в любой ссылочный и наоборот. Фактически данный оператор просто позволяет взглянуть на одно и то же содержимое памяти, интерпретируя его в соответствии с желаниями программиста.

Слайд 6


Преобразование reinterpret_cast () - 2 Оператор reinterpret_cast не меняет константности. Оператор reinterpret_cast является жестко...
Описание слайда:
Преобразование reinterpret_cast () - 2 Оператор reinterpret_cast не меняет константности. Оператор reinterpret_cast является жестко машинно-зависимым. Чтобы безопасно его использовать, надо хорошо понимать, как именно реализованы используемые типы, а также то, как компилятор осуществляет приведение. Этот оператор ни во что не компилируется, как и const_cast. Здесь не происходит вызова никакой функции. Это просто указание системе типов, что теперь у нас используется другой тип. Проблема безопасности заключается в том, что при изменении типа компилятор не выдаст никаких предупреждений или сообщений об ошибке. Компилятор не способен выяснить, адрес какого именно значения фактически хранит указатель. Отследить такие ошибки иногда чрезвычайно трудно, особенно если приведение указателя к другому типу происходит в одном файле, а используется указатель - в другом.

Слайд 7


Преобразование static_cast () Оператор static_cast предназначен для проведения преобразований между связанными значениями. Связанность проверяется на...
Описание слайда:
Преобразование static_cast () Оператор static_cast предназначен для проведения преобразований между связанными значениями. Связанность проверяется на этапе компиляции, поэтому и называется static. Типы, к которым применим static_cast:

Слайд 8


Преобразование static_cast () – 2 Числовые типы : Типы, связанные наследованием, а также ссылки и указатели на них: предположим, что классы A,B,C...
Описание слайда:
Преобразование static_cast () – 2 Числовые типы : Типы, связанные наследованием, а также ссылки и указатели на них: предположим, что классы A,B,C связаны наследованием

Слайд 9


Преобразование static_cast () – 3 Пользовательские преобразования : Это эквивалентно Следует отметить, что проведение подобных преобразований не...
Описание слайда:
Преобразование static_cast () – 3 Пользовательские преобразования : Это эквивалентно Следует отметить, что проведение подобных преобразований не всегда безопасно, поскольку при выполнении контроль отсутствует

Слайд 10


Преобразование static_cast () – пример Только объявим классы
Описание слайда:
Преобразование static_cast () – пример Только объявим классы

Слайд 11


RTTI - Run-Time Type Information RTTI позволяет программам, которые используют указатели или ссылки на базовые классы, выяснять фактические типы...
Описание слайда:
RTTI - Run-Time Type Information RTTI позволяет программам, которые используют указатели или ссылки на базовые классы, выяснять фактические типы объектов производных классов, к которым относятся эти указатели и ссылки. Большинство случаев использования RTTI можно избежать, от этого архитектура станет только лучше. RTTI обеспечивает два следующих оператора:

Слайд 12


Оператор typeid Оператор typeid имеет следующий формат:
Описание слайда:
Оператор typeid Оператор typeid имеет следующий формат:

Слайд 13


Операции с типом typeinfo Действия, которые можно производить с объектами типа type_info:
Описание слайда:
Операции с типом typeinfo Действия, которые можно производить с объектами типа type_info:

Слайд 14


Как работает typeid A * a = new C(); type_info ti = typeid(* a); // Передается ссылка на объект ti.name(); // "C"
Описание слайда:
Как работает typeid A * a = new C(); type_info ti = typeid(* a); // Передается ссылка на объект ti.name(); // "C"

Слайд 15


Преобразование dynamic_cast < > ( ) if (Circle * c = dynamic_cast(a)) { ... // Первая фигура - круг }
Описание слайда:
Преобразование dynamic_cast < > ( ) if (Circle * c = dynamic_cast(a)) { ... // Первая фигура - круг }

Слайд 16


Преобразование dynamic_cast < > - пример 1 #include using namespace std; class B { }; class C : public B { }; class D : public C { }; void f(D* pd) {...
Описание слайда:
Преобразование dynamic_cast < > - пример 1 #include using namespace std; class B { }; class C : public B { }; class D : public C { }; void f(D* pd) { C* pc = dynamic_cast(pd); // ok: C is a direct base class // pc points to C subobject of pd B* pb = dynamic_cast(pd); // ok: B is an indirect base class // pb points to B subobject of pd } void main(int argc, char * argv[]) { D* pd; f(pd); }

Слайд 17


Преобразование dynamic_cast < > - пример 2 #include using namespace std; struct B {virtual void f();}; struct A : public B {}; void B::f() { A* pa =...
Описание слайда:
Преобразование dynamic_cast < > - пример 2 #include using namespace std; struct B {virtual void f();}; struct A : public B {}; void B::f() { A* pa = new A; B* pb = new B; void* pv = dynamic_cast(pa); // pv now points to an object of type A pv = dynamic_cast(pb); // pv now points to an object of type B } void main(int argc, char * argv[]) { A a; a.f(); }

Слайд 18


Преобразование dynamic_cast < > - пример 3 #include using namespace std; class B {public: virtual void f();}; class D : public B {public: virtual...
Описание слайда:
Преобразование dynamic_cast < > - пример 3 #include using namespace std; class B {public: virtual void f();}; class D : public B {public: virtual void f();}; void B::f() { B* pb = new D; // unclear but ok B* pb2 = new B; D* pd = dynamic_cast(pb); // ok: pb actually points to a D D* pd2 = dynamic_cast(pb2); // pb2 points to a B not a D } void D::f() {} void main(int argc, char * argv[]) { B b; b.f(); }

Слайд 19


Контейнеры в С++ Контейнерами называются классы, предназначенные для размещения большого количества индивидуальных элементов.
Описание слайда:
Контейнеры в С++ Контейнерами называются классы, предназначенные для размещения большого количества индивидуальных элементов.

Слайд 20


Контейнеры – основные операции Несмотря на разнообразие внутренней организации контейнерных классов, можно определить группу базовых операций,...
Описание слайда:
Контейнеры – основные операции Несмотря на разнообразие внутренней организации контейнерных классов, можно определить группу базовых операций, обеспечивающую общую функциональность контейнеров. К ним относятся:

Слайд 21


Контейнерные классы в MFC Контейнерные классы в MFC называются коллекциями. Все коллекции по способу внутренней организации поделены на три вида:
Описание слайда:
Контейнерные классы в MFC Контейнерные классы в MFC называются коллекциями. Все коллекции по способу внутренней организации поделены на три вида:

Слайд 22


Классы коллекций в MFC Классы коллекций, не использующих шаблоны, приведены в таблице:
Описание слайда:
Классы коллекций в MFC Классы коллекций, не использующих шаблоны, приведены в таблице:

Слайд 23


Классы коллекций в MFC Классы коллекций с использованием шаблонов, приведены в таблице:
Описание слайда:
Классы коллекций в MFC Классы коллекций с использованием шаблонов, приведены в таблице:

Слайд 24


Классы коллекций в MFC – общие свойства Основные свойства коллекций, определяемые их видом:
Описание слайда:
Классы коллекций в MFC – общие свойства Основные свойства коллекций, определяемые их видом:

Слайд 25


Коллекция – пример (начало) Рассмотрим класс vct, предназначенный для хранения целых чисел в форме индексируемого массива.
Описание слайда:
Коллекция – пример (начало) Рассмотрим класс vct, предназначенный для хранения целых чисел в форме индексируемого массива.

Слайд 26


Коллекция – пример Продолжение 1 …
Описание слайда:
Коллекция – пример Продолжение 1 …

Слайд 27


Коллекция – пример Продолжение 2 …
Описание слайда:
Коллекция – пример Продолжение 2 …

Слайд 28


Коллекция – пример Продолжение 3 …
Описание слайда:
Коллекция – пример Продолжение 3 …

Слайд 29


Коллекция – пример Продолжение 4 …
Описание слайда:
Коллекция – пример Продолжение 4 …

Слайд 30


Коллекция – пример Продолжение 5 …
Описание слайда:
Коллекция – пример Продолжение 5 …

Слайд 31


Коллекция – пример Продолжение 6 …
Описание слайда:
Коллекция – пример Продолжение 6 …

Слайд 32


Коллекция – итераторы На практике может потребоваться организовывать перебор элементов контейнера одновременно и разными способами. Решение этой...
Описание слайда:
Коллекция – итераторы На практике может потребоваться организовывать перебор элементов контейнера одновременно и разными способами. Решение этой задачи состоит в создании отдельного связанного с контейнером класса, называемого итератором (iterator class), в функции которого входит обращение и восстановление элементов контейнера.

Слайд 33


Коллекция – итераторы -продолжение Эти два класса имеют дружественное отношение. Итерация, как фундаментальная операция должна быть эффективна....
Описание слайда:
Коллекция – итераторы -продолжение Эти два класса имеют дружественное отношение. Итерация, как фундаментальная операция должна быть эффективна. Главное, что для этого нужно – быстрый доступ к частным деталям реализации контейнера. Полное отсоединение обращения от агрегированного объекта позволяет делать столько итераторов, сколько нужно для проведения вычислений.



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