Поскольку книга 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'smake_unique
) - Пункт 21 (Не пытайтесь вернуть ссылку, когда вы должны вернуть объект) становится проще и более эффективный с помощью семантики перемещения
- Пункт 55 (Ознакомиться с Boost) теперь имеет меньше примеров, потому что многие функции повышения также являются частью C++ 11 или более поздних версий.
Исправить? Не больше? Как эти элементы реализованы на современном C++?
Мораль этих точек не изменилось. C++ 11, возможно, дает вам лучшие способы написания кода, который следует этим идеям, но это, в конечном счете, деталь. Вы никогда не должны зависеть от какой-либо конкретной детали и вместо этого оценивать, какая проблема решается и почему проблема существует в первую очередь. –
Некоторые из них рассматриваются в «Эффективном современном C++», что бы ни стоило.Честно говоря, это хорошее место, чтобы начать с этого. – chris
По всей вероятности, в вашей карьере вы столкнетесь с кодом pre и post C++. Я бы читал обе книги, если бы был вами. –