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

Категория: Образование
Нажмите для полного просмотра!
Принципы, слайд №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 Принципы, слайд №34

Содержание

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

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


Слайд 1


Тест с отчетом 5 (1) конструктор по умолчанию, конструктор копирования, оператор operator=(const A&), деструктор
Описание слайда:
Тест с отчетом 5 (1) конструктор по умолчанию, конструктор копирования, оператор operator=(const A&), деструктор

Слайд 2


Численные алгоритмы Численные алгоритмы выполняют разнообразную обработку числовых элементов.
Описание слайда:
Численные алгоритмы Численные алгоритмы выполняют разнообразную обработку числовых элементов.

Слайд 3


Алгоритмы – пример (1) // Содержание вспомогательного файла algo.h #ifndef _ALGO_H #define _ALGO_H #include #include #include #include #include...
Описание слайда:
Алгоритмы – пример (1) // Содержание вспомогательного файла algo.h #ifndef _ALGO_H #define _ALGO_H #include #include #include #include #include #include #include #include #include #include

Слайд 4


Алгоритмы – пример (2) /* Prn_Elems() * вывод нeобязательной строки С, за которой выводятся * - все злементы коллекции соl, разделенные пробелами. */...
Описание слайда:
Алгоритмы – пример (2) /* Prn_Elems() * вывод нeобязательной строки С, за которой выводятся * - все злементы коллекции соl, разделенные пробелами. */ template inline void Prn_Elems (const Т& col, const char* optcstr="") { typename Т::const_iterator pos; std::cout

Слайд 5


Алгоритмы – пример (3) /* Insert_Elems (collection, first. last) * - заполнение коллекции значениями от first до last * - ВНИМАНИЕ: интервал НЕ...
Описание слайда:
Алгоритмы – пример (3) /* Insert_Elems (collection, first. last) * - заполнение коллекции значениями от first до last * - ВНИМАНИЕ: интервал НЕ ЯВЛЯЕТСЯ полуоткрытым */ template inline void Insert_Elems (Т& col, int first, int last) { for (int i=first; i

Слайд 6


Алгоритмы – пример (4) #include "algo.h" using namespace std; void main() { vector col; Insert_Elems(col,1,9); Prn_Elems(col); cout
Описание слайда:
Алгоритмы – пример (4) #include "algo.h" using namespace std; void main() { vector col; Insert_Elems(col,1,9); Prn_Elems(col); cout

Слайд 7


Распределители памяти В STL используются специальные объекты, занимающиеся выделением и освобождением памяти. Такие объекты называются...
Описание слайда:
Распределители памяти В STL используются специальные объекты, занимающиеся выделением и освобождением памяти. Такие объекты называются распределителями (allocators). Распределитель представляет собой абстракцию, которая преобразует потребность в памяти в физическую операцию ее выделения. Параллельное использование разных объектов-распределителей позволяет задействовать в программе несколько разных моделей памяти. template class allocator Здесь Type – тип хранящихся в контейнере данных. Конструкторы: allocator( ); – конструктор по умолчанию allocator ( const allocator& _Right ); – конструктор копирования template allocator(const allocator& _Right ); – обобщенный конструктор копирования

Слайд 8


Распределители памяти Этот распределитель используется по умолчанию во всех тех ситуациях, когда распределитель может передаваться в качестве...
Описание слайда:
Распределители памяти Этот распределитель используется по умолчанию во всех тех ситуациях, когда распределитель может передаваться в качестве аргумента. Он использует стандартные средства выделения и освобождения памяти, то есть операторы new и delete, но в спецификации ничего не говорится о том, когда и как эти операторы должны вызываться. Таким образом, конкретная реализация распределителя по умолчанию может, например, организовать внутреннее кэширование выделяемой памяти. В большинстве программ используется распределитель по умолчанию. Иногда библиотеки предоставляют специализированные распределители, которые просто передаются в виде аргументов. Необходимость в самостоятельном программировании распределителей возникает очень редко, на практике обычно достаточно распределителя по умолчанию.

Слайд 9


Распределители памяти – члены класса Основные операции распределителей:
Описание слайда:
Распределители памяти – члены класса Основные операции распределителей:

Слайд 10


Инициализирующий итератор Класс raw_storage_iterator предназначен для перебора неинициализированной памяти и ее инициализации. Итератор...
Описание слайда:
Инициализирующий итератор Класс raw_storage_iterator предназначен для перебора неинициализированной памяти и ее инициализации. Итератор raw_storage_iterator может использовать любые алгоритмы для инициализации памяти значениями, полученными в результате выполнения алгоритма. Например, следующая команда инициализирует память, на которую ссылается указатель elems, значениями из интервала [x.begin(), x.end()); сору (x.begin(), x.end(), // Источник raw_storage_iterator(elems)); // Приемник В первом аргументе шаблона (в данном случае Т*) должен передаваться итератор вывода для типа элементов. Второй аргумент шаблона (в данном случае Т) определяет тип элементов.

Слайд 11


«Умные указатели» – тип auto_ptr Стандартная библиотека С++ предоставляет класс auto_ptr как своего рода «умный указатель», помогающий предотвратить...
Описание слайда:
«Умные указатели» – тип auto_ptr Стандартная библиотека С++ предоставляет класс auto_ptr как своего рода «умный указатель», помогающий предотвратить утечки ресурсов при исключениях. Знакомство с классом auto_ptr: Функции часто работают по следующей схеме. 1. Получение ресурсов. 2. Выполнение операций. 3. Освобождение полученных ресурсов. Если полученные ресурсы связаны с локальными объектами, они автоматически освобождаются при выходе из функции в результате вызова деструкторов локальных объектов. Но если ресурсы не связаны с объектом, они должны освобождаться явно. Как правило, такие операции с ресурсами выполняются с применением указателей. Характерный пример работы с ресурсами через указатели - создание и уничтожение объектов операторами new и delete: void f() { сlassA* ptr = new ClassA; // Создание объекта // Выполнение операций delete ptr; // Уничтожение объекта }

Слайд 12


«Умные указатели» – тип auto_ptr При использовании подобных схем нередко возникают проблемы. Первая и наиболее очевидная проблема заключается в том,...
Описание слайда:
«Умные указатели» – тип auto_ptr При использовании подобных схем нередко возникают проблемы. Первая и наиболее очевидная проблема заключается в том, что программист может забыть об удалении объекта (особенно если внутри функции присутствуют команды return). Но существует и другая, менее очевидная опасность: во время работы функции может произойти исключение, что приведет к немедленному выходу из функции без выполнения оператора delete, находящегося в конце тела функции. В результате возникает утечка памяти или, в общем случае, - ресурсов. Для ее предотвращения обычно приходится перехватывать все возможные исключения. Пример: void f() { ClassA* ptr new ClassA; // Создание объекта try { . . . } // Работа с объектом catch ( ... ) { // Для произвольного исключения: delete ptr: // - освободить ресурс throw: // - перезапустить исключение } delete ptr: // Нормальное освобождение ресурса }

Слайд 13


«Умные указатели» – тип auto_ptr Освобождение объекта при возникновении исключений приводит к усложнению программы и появлению лишнего кода. Если по...
Описание слайда:
«Умные указатели» – тип auto_ptr Освобождение объекта при возникновении исключений приводит к усложнению программы и появлению лишнего кода. Если по этой схеме обрабатывается не один, а два объекта или имеется несколько секций catch, программа становится еще запутаннее. В подобных решениях - сложных и чреватых ошибками – проявляется плохой стиль программирования. В данной ситуации нужен умный указатель, освобождающий данные, на которые он ссылается, при уничтожении самого указателя. Более того, поскольку такой указатель является локальной переменной, он будет уничтожаться автоматически при выходе из функции независимо от причины выхода – нормального завершения или исключения. Класс auto_ptr проектировался именно для этих целей. Указатель auto_ptr является владельцем объекта, на который он ссылается. В результате уничтожение указателя автоматически приводит к уничтожению объекта. Для работы auto_ptr необходимо, чтобы управляемый объект имел только одного владельца.

Слайд 14


«Умные указатели» – тип auto_ptr – как использовать? #include // Заголовочный файл для auto_ptr void f() { std::auto ptr ptr(new ClassA); // Создание...
Описание слайда:
«Умные указатели» – тип auto_ptr – как использовать? #include // Заголовочный файл для auto_ptr void f() { std::auto ptr ptr(new ClassA); // Создание и инициализация auto ptr . . . // Работа с указателем } Команда delete и секция catch стали лишними. Интерфейс указателя auto_ptr почти не отличается от интерфейса обычного указателя; оператор * производит разыменование объекта, на который ссылается указатель, а оператор -> предоставляет доступ к членам класса или структуры. Математические операции с указателями (такие, как ++) для auto_ptr не определены. Впрочем, это скорее достоинство, нежели недостаток, потому что вычисления с указателями слишком часто приводят к неприятностям. Важно: тип auto_ptr не позволяет инициализировать объект обычным указателем в конструкции присваивания. Инициализация auto_ptr должна производиться напрямую по значению: std::auto ptr ptr1(new ClassA); // ОК std::auto ptr ptr2 = new ClassA; // ОШИБКА

Слайд 15


Передача прав владения в auto_ptr Два и более экземпляра auto_ptr не должны одновременно быть владельцами одного объекта. К сожалению, в программе...
Описание слайда:
Передача прав владения в auto_ptr Два и более экземпляра auto_ptr не должны одновременно быть владельцами одного объекта. К сожалению, в программе такая ситуация не исключена (например, если два экземпляра auto_ptr инициализируются одним и тем же объектом). Программист обязан позаботиться о том, чтобы этого не случилось. Возникает вопрос: как работают копирующий конструктор и оператор присваивания типа auto_ptr? В обычном варианте эти операции копируют данные из одного объекта auto_ptr в другой, но в нашем случае это создает ситуацию, при которой один объект принадлежит сразу двум экземплярам auto_ptr. Проблема решается просто, но у этого решения есть одно важное следствие; копирующий конструктор и оператор присваивания передают «право владения» тем объектом, на который ссылается auto_ptr. Рассмотрим следующий пример использования копирующего конструктора: // Инициализация auto ptr новым объектом std::auto_ptr ptr1(new ClassA); // Копирование auto ptr // - право владения объектом передается от ptr1 к ptr2 std::auto_ptr ptr2(ptr1);

Слайд 16


Передача прав владения в auto_ptr Смена владельца не является простым копированием. Во всех случаях передачи права владения предыдущий владелец (ptr1...
Описание слайда:
Передача прав владения в auto_ptr Смена владельца не является простым копированием. Во всех случаях передачи права владения предыдущий владелец (ptr1 в нашем примере) перестает им быть. В результате после передачи права владения предыдущий владелец содержит null-указатель. Подобное поведение серьезно противоречит общим принципам инициализации и присваивания в языках программирования. Копирующий конструктор модифицирует объект, используемый для инициализации нового объекта, а оператор присваивания модифицирует правую часть операции присваивания. Программист должен сам следить за тем, чтобы программа не пыталась разыменовать экземпляр auto_ptr, переставший владеть объектом и содержащий null-указатель. Новое значение, присваиваемое auto_ptr, также должно относиться к типу auto_ptr. Присваивание обычных указателей не допускается: std: :auto ptr ptr; // Создание auto ptr ptr = new ClassA; // ОШИБКА ptr = std::auto_ptr(new ClassA); // ОК. удаление старого объекта // и получение нового.

Слайд 17


Boost libraries Библиотека BOOST C++ - это собрание множества независимых библиотек, созданных независимыми разработчиками и тщательно проверенными...
Описание слайда:
Boost libraries Библиотека BOOST C++ - это собрание множества независимых библиотек, созданных независимыми разработчиками и тщательно проверенными на различных платформах. Можно считать, что BOOST C++ - это расширение стандартной библиотеки C++. Многие вещи, предлагавшиеся для нового стандарта C++ и отвергнутые комитетом по стандартизации, осели в BOOST. Использование компонентов BOOST C++ в своих разработках экономит значительные усилия - особенно если планируется портировать проект на различные платформы. Полная (и актуальная) документация по всем аспектам библиотеки BOOST C++ находится на сайте Там же Вы можете найти все ее исходные тексты - скачивайте архив, распаковывайте и используйте. Практическая полезность библиотеки BOOST гарантируется. С составом библиотеки можно ознакомиться здесь:

Слайд 18


Boost libraries – работа с памятью pool - управление памятью в виде пулов smart_ptr - "Умные" указатели. scoped_ptr - не копируемые...
Описание слайда:
Boost libraries – работа с памятью pool - управление памятью в виде пулов smart_ptr - "Умные" указатели. scoped_ptr - не копируемые "автоматические" указатели. Подобно auto_ptr из стандартной библиотеки, но operator=() не реализован. scoped_array - ни auto_ptr, ни scoped_ptr нельзя использовать для массивов. scoped_array - это адаптация scoped_ptr для массивов shared_ptr - указатели с подсчетом ссылок shared_array - реализация shared_ptr для массивов weak_ptr - реализация "ослабленного" shared_ptr. Необходим для для разрыва циклических связей. Скажем в main() определен shared_ptr на объект A в котором явно или не явно присутствует shared_ptr на себя самого. Счетчик ссылок будет равен 2. При удалении первого shared_ptr счетчик ссылок на объект А будет уменьшен до 1 и объект никогда не удалится! Для решения этой проблемы и был создан week_ptr.

Слайд 19


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 20


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 21


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 22


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 23


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 24


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 25


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 26


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 27


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 28


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 29


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 30


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 31


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 32


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 33


Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)
Описание слайда:
Принципы программирования The Art of UNIX Programming (AddisonWesley, 2004) Эрик Раймонд (Eric Raymond)

Слайд 34


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



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