c ++ 11 — Эффективен ли C ++ до сих пор?

Из того, что я видел в эта почта Я решил начать читать книгу Эффективный C ++.

Но теперь, когда из-за C ++ 11 появилось много новых функций и изменилось несколько хороших практик, я не уверен, действительно ли это хорошая идея. Появился ли C ++ 11 как устаревший совет, содержащийся в Effective C ++? Если да, то каких тем мне следует избегать?

129

Решение

Это то, что сам Скотт Мейерс должен был сказать об этом в своем блоге

Что может заставить вас задаться вопросом, действительно ли информация и советы в
Эта редакция Effective C ++ до C ++ 0x остается актуальной. я рад
сообщить, что это делает. Удивительно так, на самом деле. Потратив почти
два года, погруженные в детали C ++ 0x, я ожидал немного простонать
как я рассмотрел оглавление этой книги с учетом C ++ 0x. конечно
некоторые предметы были бы неуместными. Но совет, который я нашел, оказался
звук. Если разработчики на C ++ 0x предпочитают использовать константы, перечисления и встроенные
#defines (Пункт 2)? Им следует. Должны ли они предотвратить исключения из
оставить деструкторов (пункт 8)? Конечно. Должны ли они использовать объекты для
управлять ресурсами? Объявить данные членов частными? Рассмотреть альтернативы
к виртуальным функциям? Фактор параметр-независимый код из
шаблоны? (Пункты 13, 22, 35 и 44.) Да, да, да, да! Моя цель имеет
всегда был для содержания Effective C ++, чтобы обобщить
рекомендации в книге, и это резюме остается в силе
Разработка C ++ 0x как «традиционная» разработка C ++. C ++ 0x является
больший язык, и в некотором смысле это другой, но ядро
методы эффективного использования «старого» C ++ являются ключевыми для
эффективное использование C ++ 0x тоже.

Это не значит, что этот Effective C ++ идеально подходит для
C ++ 0x. В книге не обсуждаются новые возможности C ++ 0x, поэтому
эффективное использование этих функций отсутствует. C ++ 0xified
Эффективный C ++, безусловно, будет иметь элементы, предназначенные для операций перемещения,
для равномерной инициализации и лямбда-выражений, и, вероятно, у него будет целая глава, посвященная эффективному использованию API параллелизма. Такая книга также будет содержать различные примеры, например, использующие автоматические переменные, основанные на диапазоне для циклов, инициализаторы по умолчанию в классе, а также случайный шаблон переменной. В той мере, в которой эта книга не поддерживает C ++ 0x, ошибки — это упущения, а не комиссии.

ОБНОВИТЬ: новый заголовок Эффективный Современный C ++ продается с ноября 2014 года O’Reilly а также Амазонка (и многие другие, что вы можете Google).

86

Другие решения

Да, определенно стоит прочитать. Eсть новая книга, над которой работает Скотт: Эффективный C ++ 11, который концентрируется только на C ++ 11. Эффективный C ++ все еще очень актуален и не заменен новой книгой. Купи, прочитай, наслаждайся 🙂

44

Во-первых, книга по-прежнему актуальна для C ++ 03.

Во-вторых, Мейерс пишет или написал, в зависимости от того, когда вы читаете это предложение, Effective C ++ 11.

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

только Я бы сказал, что недействительными являются те, которые говорят: «Не делай этого, делай это вместо этого». «Не делай этого» будет по-прежнему в силе. Но C ++ решит некоторые проблемы. В частности, любые рекомендации по использованию boost, скорее всего, устарели, поскольку в C ++ 11 включены многие функции, для которых Мейерс специально отсылает читателя к Boost.

20
По вопросам рекламы [email protected]