2016-06-12 1 views
2

Поскольку книга Effective C++ выглядит still worth reading и the best to start with from the Effective C++ series, мне интересно, какие предлагаемые решения/реализации мне не нужно понимать подробно/запоминать, потому что в C++ 11 или более поздних версиях есть лучшие решения. Итак:Какие эффективные элементы C++ могут быть реализованы лучше с помощью C++ 11? Как?

Какие эффективные элементы C++ могут быть реализованы намного проще или лучше с помощью C++ 11 или более поздней версии? Как они могут быть реализованы сейчас, и в каком смысле это лучше?


Детали:

Поскольку есть many C++ idioms deprecated in C++11, я думаю, это также влияет на решения в книге Эффективный C++. Например, глядя на its table of contents, я думаю (так как я еще не читал эту книгу), что

  • Пункт 6 (Явное запретить использование компилятора сгенерированных функций, которые вы не хотите) становится проще через =delete
  • Пункт 17 (Сохранять новые объекты в интеллектуальных указателях в автономных операциях) упрощается с помощью make_shared (и C++ 14's make_unique)
  • Пункт 21 (Не пытайтесь вернуть ссылку, когда вы должны вернуть объект) становится проще и более эффективный с помощью семантики перемещения
  • Пункт 55 (Ознакомиться с Boost) теперь имеет меньше примеров, потому что многие функции повышения также являются частью C++ 11 или более поздних версий.

Исправить? Не больше? Как эти элементы реализованы на современном C++?

+2

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

+2

Некоторые из них рассматриваются в «Эффективном современном C++», что бы ни стоило.Честно говоря, это хорошее место, чтобы начать с этого. – chris

+1

По всей вероятности, в вашей карьере вы столкнетесь с кодом pre и post C++. Я бы читал обе книги, если бы был вами. –

ответ

3

Многие рецепты от Эффективные C++ по-прежнему применяются с C++ 11. Кстати, Effecive Modern C++ фокусируется на изменениях на C++ 11.

Вопрос очень широк, но это приходит на ум:

5) Тем не менее, верно, но не забывайте, конструктор перемещения и назначения.
6) Тем не менее верно, но теперь легче, как вы уже объяснили
13) Принцип все еще верно, но забывают auto_ptr и использовали shared_ptr и unique_ptr
14) Тем не менее, верно, но упрощен с shared_ptr.
17) Все еще верно, но теперь проще, как вы уже объясняли
18) Все еще верно, но предпочитаем перечислять классы для перечислений.
54) Тем не менее относится, но к новым библиотекам
55) Тем не менее верно, хотя больше возможностей наддува теперь в стандартных

Много примеров можно упростить, используя auto или range for

Смежные вопросы