Главная » 2015 Декабрь 12 » Эффективный и современный C++: 42 рекомендации по использованию C++11 и C++14
08:41:06 Эффективный и современный C++: 42 рекомендации по использованию C++11 и C++14 | |
Эффективный и современный C++: 42 рекомендации по использованию C++11 и C++14 — В этой книге отражен бесценный опыт ее автора как программиста на C++. Новые возможности этого языка программирования, появившиеся в стандартах C++11 и C++14 - это не просто новые ключевые слова или функции, это появление совершенно новых концепций, так что для их эффективного использования недостаточно просто узнать об их существовании, и программировать на C++11, как на несколько улучшенном и расширенном функционально C++98. Когда происходят такие глобальные изменения в языке программирования, их изучению следует посвятить определенное время, написать сотни, а еще лучше - тысячи строк кода, и столкнуться с массой проблем, кажущихся тем более странными и непонятными, чем большим опытом работы с C++98 вы обладаете. К программированию в полной мере относится фраза Евклида о том, что в геометрии нет царских путей. Но пройти путь изучения и освоения нового языка программирования вам может помочь проводник, показывающий наиболее интересные места и предупреждающий о ямах и ухабах. Таким проводником может послужить книга Скотта Мейерса. С ней вы не заблудитесь и не забредете в дебри, из которых будете долго и трудно выбираться с помощью отладчика. При этом книга не просто научит вас использовать новые возможности языка - она научит использовать их эффективно. Но и это не все - книга не просто учит эффективному применению C++, но еще и рассказывает, почему ту или иную задачу следует решать именно так. Эта книга заставляет вас не просто заучить правила - она заставляет думать. И хотя эта книга в первую очередь предназначена для энтузиастов и профессионалов, она достойна места на полке любого программиста - как профессионала, так и зеленого новичка. Освоение C++11 и C++14 - это больше, чем просто ознакомление с вводимыми этими стандартами возможностями (например, объявлениями типов auto, семантикой перемещения, лямбда-выражениями или поддержкой многопоточности). Вопрос в том, как использовать их эффективно - так, чтобы создаваемые программы были корректны, эффективны и переносимы, а также чтобы их легко можно было сопровождать. Именно этим вопросам и посвящена данная книга, описывающая создание по-настоящему хорошего программного обеспечения с использованием C++11 и C++14 - т.е. с использованием современного C++. В книге рассматриваются следующие темы: Преимущества и недостатки инициализации с помощью фигурных скобок, спецификации noexcept, прямой передачи и функций make интеллектуальных указателей; Связь между std::move, std::forward, rvalue-ссылками и универсальными ссылками; Методы написания понятных, корректных, эффективных лямбда-выражений; Чем std::atomic отличается от volatile, как они используются и как соотносятся с API параллельных вычислений C++; Какие из лучших методов "старого" программирования на C++ (т.е. C++98) должны быть пересмотрены при работе с современным C++. Эффективный и современный C++, следуя принципам более ранних книг Скотта Мейерса, охватывает совершенно новый материал. Эта книга достойна занять свое место на полке каждого программиста на современном C++. Название: Эффективный и современный C++: 42 рекомендации по использованию C++11 и C++14 Автор: Скотт Мейерс Издательство: Вильямс Год: 2015 Страниц: 304 Формат: PDF Размер: 13,2 Мб ISBN: 978-5-8459-2000-3 Качество: Отличное Язык: Русский Содержание: Об авторе Введение Терминология и соглашения Замечания и предложения От редакции Ждем ваших отзывов! Глава 1. Вывод типов 1.1. Вывод типа шаблона 1.2. Вывод типа auto 1.3. Знакомство с decl tуре 1.4. Как просмотреть выведенные типы Глава 2. Объявление auto 2.1. Предпочитайте auto явному объявлению типа 2.2. Если auto выводит нежелательный тип используйте явно типизированный инициализатор Глава 3. Переход к современному С++ 3.1. Различие между {} и () при создании объектов 3.2. Предпочитайте nullptr значениям 0 и NULL 3.3. Предпочитайте объявление псевдонимов применению typedef 3.4. Предпочитайте перечисления с областью видимости перечислениям без таковой 3.5. Предпочитайте удаленные функции закрытым неопределенным 3.6. Объявляйте перекрывающие функции как override 3.7. Предпочитайте итераторы const _ i terator итераторам i terator 3.8. Если функции не генерируют исключений, объявляйте их как noexcept 3.9. Используйте, где это возможно, constexpr 3.10. Делайте константные функции - члены безопасными в смысле потоков 3.11. Генерация специальных функций-членов Глава 4. Интеллектуальные указатели 4. 1. Используйте std::unique_ptr для управления ресурсами путем исключительного владения 4.2. Используйте std::shared_ptr д ля управления ресурсами путем совместного владения 4.3. Используйте std::weak_ptr для std::shared_ptr-пoдoбныx указателей которые могут быть висячими 4.4. Предпочитайте использование std::make_unique и std::make_shared непосредственному использованию оператора new 4.5. При использовании идиомы указателя на реализацию определяйте специальные функции-ч лены в файле реализации Глава 5. Rvalue-ccыnки, семантика перемещений и прямая передача 5. 1. Азы std::move и std::forward 5.2. Отличие универсальных ссылок от rvalue-ccылoк 5.3. Используйте std::move для rvalue-ccылoк, а std::forward д ля универсальных ссылок 5.4. Избегайте перегрузок для универсальных ссылок 5.5. Знакомство с альтернативами перегрузки для универсальных ссылок Отказ от перегрузки Передача const Т& Передача по значению Диспетчеризация дескрипторов Ограничения шаблонов, получающих универсальные ссылки Компромиссы 5.6. Свертывание ссылок 5.7. Считайте, что перемещающие операции отсутствуют, дороги или не используются 5.8. Познакомьтесь с случаями некорректной работы прямой передачи Инициализаторы в фигурных скобках 0 и NULL в качестве нулевых указателей Целочисленные члены-данные stat ic const и constexpr без определений Имена перегруженных функций и имена шаблонов Битовые поля Резюме Глава 6. Лямбда-выражения 6.1. Избегайте режимов захвата по умолчанию 6.2. Используйте инициализирующий захват для перемещения объектов в замыкания 6.3. Используйте параметры decltype для auto&& для передачи с помощью std::forward 6.4. Предпочитайте лямбда-выражения применению std::bind Глава 7. Параллельные вычисления 7. 1. Предпочитайте программирование на основе задач программированию на основе потоков 7.2. Если важна асинхронность, указывайте std::launch::async 7.3. Делайте std::thread неподключаемым на всех путях выполнения 7.4. Помни те о разном поведении деструкторов дескрипторов потоков 7.5. Применяйте фьючерсы void для одноразовых сообщений о событиях 7.6. Используйте std::atomic для параллельности, volatile - для особой памяти Глава 8. Тонкости 8.1. Рассмотрите передачу по значению для копируемых параметров которые легко перемещаются и всегда копируются 8.2. Рассмотрите применение размещения вместо вставки Предметный указатель Скачать Эффективный и современный C++: 42 рекомендации по использованию C++11 и C++14
Скачать с dfiles.ru Скачать с turbobit.net Скачать с hitfile.net Скачать с uploaded.net | |
Категория: Усе до ігор | Просмотров: 208 | | |
Всего комментариев: 0 | |