Скотт Мейерс - Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14

Тут можно читать онлайн Скотт Мейерс - Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Вильямс, год 2016. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14
  • Автор:
  • Жанр:
  • Издательство:
    Вильямс
  • Год:
    2016
  • Город:
    Москва
  • ISBN:
    978-5-8459-2000-3
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Скотт Мейерс - Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14 краткое содержание

Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14 - описание и краткое содержание, автор Скотт Мейерс, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Эффективный и современный С++
В книге рассматриваются следующие темы. Освоение С++11 и С++14 — это больше, чем просто ознакомление с вводимыми этими стандартами возможностями (например, объявлениями типов
, семантикой перемещения, лямбда-выражениями или поддержкой многопоточности). Вопрос в том, как использовать их эффективно, чтобы создаваемые программы были корректны, эффективны и переносимы, а также чтобы их легко можно было сопровождать. Именно этим вопросам и посвящена данная книга, описывающая создание по-настоящему хорошего программного обеспечения с использованием C++11 и С++14 — т.е. с использованием современного С++.
■ Преимущества и недостатки инициализации с помощью фигурных скобок, спецификации
, прямой передачи и функций
интеллектуальных указателей
■ Связь между
,
, rvalue-ссылками и универсальными ссылками
■ Методы написания понятных, корректных,
лямбда-выражений
■ Чем
отличается от
, как они используются и как соотносятся с API параллельных вычислений С++
■ Какие из лучших методов “старого” программирования на С++ (т.е. С++98) должны быть пересмотрены при работе с современным С++
Более чем 20 лет книги
серии
являются критерием уровня книг по программированию на С++. Понятное пояснение сложного технического материала принесло ему всемирную известность. Он всегда самый желанный гость на международных конференциях, а его услуги консультанта широко востребованы во всем мире.
Скотт Мейерс Эффективный и современный С++, После изучения основ С++ я перешел к изучению того, как применять С++ в промышленном программировании, с помощью серии книг Скотта Мейерса Эффективный С++. Эффективный и современный С++ — наиболее важная из книг серии, предлагающая ключевые рекомендации, стили и идиомы, позволяющие эффективно использовать современный С++. Вы еще не купили эту книгу? Сделайте это прямо сейчас. Герб Саттер,
глава Комитета ISO по стандартизации С++, специалист в области архитектуры программного обеспечения на С++ в Microsoft

Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14 - читать онлайн бесплатно полную версию (весь текст целиком)

Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14 - читать книгу онлайн бесплатно, автор Скотт Мейерс
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

9

“Независимо от состояния программы” и “без ограничений” не узаконивает программы, поведение которых уже является неопределенным. Например, std::vector::sizeимеет широкий контракт, но это не означает, что данная функция должна разумно себя вести при применении к произвольному блоку памяти, приведенному к типу std::vector. Результат приведения не определен, поэтому нет никаких гарантий, касающихся поведения программы, содержащей такое приведение.

10

Поскольку P oint::xValueвозвращает double, типом mid.xValue() * 10также является double. Типы с плавающей точкой не могут использоваться для инстанцирования шаблонов или для указания значений перечислений, но они могут быть использованы как части больших выражений, дающих интегральные типы. Например, для инстанцирования шаблона или для указания значения перечислителя может использоваться выражение static_cast(mid.xValue() * 10).

11

Из этого правила есть несколько исключений. Большинство из них обусловлено аварийным завершением программы. Если исключение выходит за пределы основной функции потока (например, mainв случае начального потока программы) или если нарушена спецификация noexcept(см. раздел 3.8), локальные объекты могут не быть уничтожены; они, определенно, не уничтожаются, когда вызывается функция std::abortили функция выхода (т.e. std::_Exit, std::exitили std::quick_exit).

12

Стандарт не требует использования именно такой реализации, но все известные мне реализации стандартной библиотеки поступают именно так

13

Дня создания полнофункциональной версии make_uniqueс минимальными усилиями поищите документ, ставший ее источником, и скопируйте из него ее реализацию. Этот документ — N3656 от 18 апреля 2013 года, его автор — Стивен T. Лававей (Stephan T. Lavavej).

14

На практике значение слабого счетчика не всегда совпадает с количеством указателей std::weak_ptr, ссылающихся на управляющий блок, поскольку разработчики библиотеки нашли способы добавлять в слабый счетчик дополнительную информацию, которая упрощает генерацию лучшего кода. В данном разделе мы игнорируем этот факт и считаем, что значение слабого счетчика представляет собой количество указателей std::weak_ptr, ссылающихся на управляющий блок.)).

15

Непереводимая игра слов, основанная на использовании для обычного указателя названия “raw pointer” (дословно — “сырой указатель”). — Примеч. пер .

16

В разделе 5.3 поясняется, что к универсальным ссылкам почти всегда может применяться std::forward, так что, когда эта книга готовилась к печати, некоторые члены сообщества С++ начинали именовать универсальные ссылки передаваемыми ссылками .

17

Такими локальными объектами являются большинство локальных переменных (например, такие как wв makeWidget), а также временные объекты, создаваемые как часть инструкции return. Параметры функции на такое звание претендовать нс могут. Некоторые программисты различают применение RVO к именованным и неименованным (т.e. временным) локальным объектам, ограничивая термин “RVO” неименованными объектами и называя его применение к именованным объектам оптимизацией именованных возвращаемых значений (named return value optimization — NRVO).

18

Известная история о том, что об одном и том же до средины наполненном стакане пессимисты говорят, что он наполовину пуст, а оптимисты — что он наполовину полон. — Примеч. пер.

19

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

20

std::bindвсегда копирует свои аргументы, но вызывающий код может добиться эффекта сохранения аргумента по ссылке путем применения std::ref. Результат вызова

auto compressRateB = std::bind(compress, std::ref(w), _1);

состоит в том. что compressRateBдействует так, как если бы сохранялась ссылка на объект w, а не его копия.

21

В предположении, что таковая имеется. В некоторых встроенных системах ее нет.

22

Это упрощение. Значение имеет не фьючерс, для которого вызывается getили wait, а совместно используемое состояние, на которое ссылается фьючерс. (В разделе 7.4 обсуждается взаимосвязь фьючерсов и совместно используемых состояний.) Поскольку std: futureподдерживают перемещение, а также могут использоваться для построения std::shared_futureи поскольку std::shared_futureмогут копироваться, объект фьючерса, ссылающийся на совместно используемое состояние, возникающее из вызова std::async, в который была передана f, вероятно, будет отличаться от фьючерса, возвращенного std::async. Однако обычно просто говорят о вызове функций-членов getили waitфьючерса, возвращенного из std::async.

23

Часто их переводят как объединяемое и необъединяемое , но, на наш взгляд, термин подключение лучше отражает смысл происходящего с потоком, связанным с объектом std::thread, при вызове функции join, как и отключение для происходящего при вызове функции detach. — Примеч. пер .

24

Вы можете обратиться к книге Энтони Вильямса (Anthony Williams) С++ Concurrency in Action (Manning Publications, 2012), раздел 9.2.

25

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

26

Разумной отправной точкой для начала изучения этого вопроса является запись в моем блоге от 24 декабря 2013 года в The View From Aristeia , “ThreadRAII + Thread Suspension = Trouble?”

27

Это справедливо только для std::аtomic, использующих последовательную согласованность , которая является применяемой по умолчанию (и единственной) моделью согласованности дня объектов std::atomic, использующих показанный в этой книге синтаксис. C++11 поддерживает также модели согласованности с более гибкими правилами переупорядочения кода. Такие слабые (или смягченные ) модели делают возможным создание программного обеспечения, работающего более быстро на некоторых аппаратных архитектурах, но применение таких моделей дает программное обеспечение, которое гораздо труднее правильно понимать и поддерживать. Тонкие ошибки в коде с ослабленной атомарностью не являются редкостью даже для экспертов, так что вы должны придерживаться, насколько это возможно, последовательной согласованности.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Скотт Мейерс читать все книги автора по порядку

Скотт Мейерс - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14 отзывы


Отзывы читателей о книге Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14, автор: Скотт Мейерс. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x