Что хорошие практики программирования изменят с C++ 11?

Например, "Не возвращают объекты значением, если они являются дорогими для копирования" (RVO не может всегда использоваться). Этот совет мог бы измениться из-за rvalue ссылок.

То же могло бы быть сказано о хранении наборов указателей на объекты, потому что копирование их значением в набор было слишком дорогим; эта причина больше не могла бы быть допустимой.

Или использованию перечислений можно было бы препятствовать в пользу "класса Enum".

Что изменят другие методы или подсказки?

21
задан Jon 24 February 2012 в 10:31
поделиться

3 ответа

Я ожидаю, что C++, написанный в функционально-подобном стиле, станет более распространенным, потому что:

  • Лямбда-выражения значительно упрощают использование алгоритмов стандартной библиотеки
  • Семантика перемещения делает возврат объектов стандартной библиотеки или других контейнеров RAII значительно дешевле
12
ответ дан 29 November 2019 в 21:49
поделиться

Улучшена локальность кода за счет использования лямбда-выражений.

6
ответ дан 29 November 2019 в 21:49
поделиться

Rvalue references не является заменой RVO или NRVO. Возвращать большие вещи по значению по-прежнему глупо - просто это менее глупо, когда класс на самом деле маленький и занимает память кучи. Передача ссылки на возвращаемое значение по-прежнему является лучшей практикой, имо.

Объекты функций как необработанные структуры/классы будут отменены в пользу лямбд.

Честно говоря, я не могу придумать ничего особенного. Кажется, что C++0x скорее упростит существующий код, чем изменит его.

4
ответ дан 29 November 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: