Основные C ++ идиомы / методы - PullRequest
       43

Основные C ++ идиомы / методы

10 голосов
/ 27 февраля 2010

Примечание: помечено как вики сообщества.

В последние дни я понял, как мало я знаю о C ++.

Кроме того:

  • с использованием STL
  • Реализация RAII
  • реализация умных указателей с подсчетом ссылок
  • написание собственных шаблонных классов на основе политик
  • перегрузка операторов << для удовольствия </li>

Какие еще приемы нужно знать хорошему программисту на C ++?

Спасибо!

Ответы [ 6 ]

5 голосов
/ 27 февраля 2010

Я думаю, что это должно охватывать это:

Больше идиом C ++ - Wikibooks

4 голосов
/ 27 февраля 2010
  • ОО Дизайн
  • Типы исключительных гарантий безопасности (именно на этом основаны большинство шаблонов / идиом проектирования).
  • Когда использовать какие стандартные контейнеры
  • Повышение
2 голосов
/ 27 февраля 2010

Первые два «должны знать» для хорошего программиста на C ++. «Хорошие программисты на C ++» не перегружают операторы ради развлечения.

1 голос
/ 27 октября 2012

Basic:

  • RTTI
  • Виртуальные функции
  • shared_ptr и т. Д.
  • Шаблоны
  • Виртуальное наследование
  • Variadic макросов

Также полезно:

  • Атрибуты (зависит от вашего компилятора)
  • Вариативные шаблоны
  • Вариативные функции
  • Constexpr (сортировка во время компиляции / вычисление хеша строк и т. Д., Но последний связан с последним разделом)
  • Лямбда

Полезно для мозгового штурма или в особых случаях:

  • CRTP
  • SFINAE
  • inable_if (тип черты)
  • Макрос Foreach
  • Пользовательские литералы
0 голосов
/ 06 ноября 2015

То, как я улучшал свой c ++, читает исходный код leveldb. Потому что leveldb - это код уровня продукта. Таким образом, вы можете узнать идиому и шаблон проектирования cpp из реального продукта. Позвольте мне показать вам пример

Leveldb использует идиому Pimpl, почти во всех заголовочных файлах, например table.h table_build.h write_batch.h. Вы можете узнать из кода непосредственно

Leveldb использует множество шаблонов проектирования ОО, таких как шаблон сборки, таблица имеет класс table_build для построения таблицы, блок имеет класс block_build для построения блока

Leveldb также использует шаблон Iterator, итератор заставляет нас использовать leveldb более удобным.

Так что я думаю, что в leveldb есть много идиом или шаблонов проектирования, которые должен знать инженер c ++.

0 голосов
/ 27 февраля 2010

(вряд ли нужно знать, но все же полезно). Написание доменных языков с перегрузкой операторов и шаблонным метапрограммированием (хороший пример см. В Boost.Spirit) - но это то, что заставляет стрелять в ноги легко тоже.

...