Что на вашем читом С++?
Каждый раз так часто мне приходится переключаться между языками для большей части кода, который я пишу (будь то для работы или для игры). Я нахожу, что С++ является одним из тех языков, для которого требуется много пространства для умственного кэша, поэтому, если я отвлекусь от него, я забуду много деталей. Даже такие вещи, как добавление элементов в контейнер STL или использование ключевого слова хранения static
в различных контекстах, все перемешались ( "это add
, append
, push
... oh, it push_back
" ).
Итак, какие существенные лакомые кусочки вы любите загружать в свой мозг, когда пишете С++?
Изменить: я должен сказать, что я хочу, чтобы у меня была возможность пометить эту страницу и использовать ее в качестве моей cheatsheet:)
Ответы
Ответ 1
Когда я переключаюсь с Java на С++, мне нравится просматривать элементы из Coding Standards Standards Хербом Саттером и Андреем Александреску.
Скотт Майерс Эффективные серии С++ отлично подходят для этого.
Вот быстрые базовые вещи, которые работают для меня:
- Используйте
std::swap()
- "Когда вы сомневаетесь, делайте то, что делаете". (Скотт Мейерс)
-
const *
означает постоянные данные, * const
означает постоянный указатель (читайте декларацию назад).
- Объявить оператор присваивания и конструктор копирования в классах с динамически назначенными данными.
- С++ будет писать оператор присваивания и конструктор копирования для вас, если вы не объявите его самостоятельно. За исключением случаев, когда вы объявляете их (частные, скорее всего), и опускаете их определять.
- Оператор =() возвращает ссылку на
*this
- База вызовов (rhs) в списке инициализации конструктора производных копий.
- Вызов
Base::operator=(rhs);
в производном operator=()
- Проверить назначение на себя в
operator=()
- Не выполняйте
operator=()
, вызывая конструктор копирования (Herb Sutter, напишите, что вы знаете, и знайте, что вы пишете)
- Помните RAII
- Исключение исключений по ссылке
Ответ 2
В моей cheatsheet: взаимодействия между const и указателями:
int * p; // pointer
int const * p; // pointer to const value
int * const p; // const pointer
int const * const p; // const pointer to const value
По существу, разделите объявление на символ *
, и если const падает влево, то указанное значение будет const, а если оно падает вправо, то указатель сам будет const.
Ответ 3
Я сохраняю PDF файл стандарта С++ открытым. Это полезно для быстрого поиска всех интерфейсов библиотеки (в частности, интерфейсов контейнеров и файлов iostream). Это также полезно для быстрого разрешения аргументов коллег о синтаксисе и семантике С++.
Я еще не понял, как загрузить PDF в мой мозг.
Ответ 4
Так как я постоянно работаю на С++, я сохраняю большую часть синтаксиса в своей голове. Для ссылки на библиотеку я использую sgi и Josuttis ' книга. Когда я еще не закончил С++ и действительно хочу обновить, вернусь к Эффективный С++.
Когда мне нужно ответить на более глубокий вопрос, я буду ссылаться на стандартную или в книгу Страустрапа.
Когда все остальное не удается, google и stackoverflow - отличные инструменты.
Ответ 5
Реализация обратного вызова для нестатической функции члена С++
Каждый раз, когда я должен это делать, мне нужно посмотреть это. На самом деле все, что касается деталей указателя функции, всегда имеет тенденцию настраивать мой мозг. Я нашел Учебник по указателям функций, чтобы быть довольно хорошей ссылкой.
Ответ 6
На моем C Cheatsheet (и на С++ один по расширению), указатель на синтаксис функции.
Ответ 7
На самом деле не на чит-листе и не очень специфичен для С++, но у меня есть "Flush the buffer!". на липкой ноте, чтобы напомнить мне, что, вероятно, неправильно, когда я не получаю данные.
Ответ 8
Я держу весь сайт удобным для cheatsheets вообще:
http://www.cheat-sheets.org/#CPP
Чипсета cpp немного базовая, но STL полезен.
Ответ 9
Я использую сайт cplusplus.com. Это отличная ссылка для программирования на C и С++.
Ответ 10
Специализация шаблона. Мне всегда нужно искать это.
Ответ 11
У меня есть небольшая копия диаграммы приоритета оператора, прикрепленной к моей стене куба.
Ответ 12
Сводная страница Scott Meyer TR1, http://www.aristeia.com/EC3E/TR1_info.html
Ответ 13
Что касается операторов, cpp.operator-precedence.com
Ответ 14
Собственно, то, что меня больше всего переключает между С# и С++, является синтаксисом конструктора. (Я все время хочу использовать "новое" для всего).
Ответ 15
Dinkumware Compleat Reference для STL и других стандартных <include> s.
Ответ 16
Для тех, кому нужна быстрая ссылка и резюме, вот Cipher Cheat Sheet
Лист обложек С++ - часть 1
Лист обложек С++ - часть 2
Ответ 17
Доступ к Google и возможность ввода для меня достаточно.
По правде говоря, я испорчен, имея почти гарантированный доступ к сети в моей рабочей среде. В противном случае, по какой-либо причине, у меня также есть все три стандартных PDF файла.
Недостатком этого является высокий коэффициент угадывания/знания во время фактических разделов Q & A в интервью на С++. Положительным моментом является то, что я очень хорош в своей работе.: P