Время от времени мне придется переключаться между языками для большей части кода, который я пишу (будь то для работы или для игры). Я считаю, что C++ - один из тех языков, для которых требуется много места в мысленном кэше, поэтому, если я сделаю большой перерыв, я забуду многие детали. Даже такие вещи, как добавление элементов в контейнер STL или использование ключевого слова хранилища static в различных контекстах, запутываются («это add, append, push ... ох, это push_back»).
Итак, какие важные лакомые кусочки вы хотели бы закладывать в свой мозг, когда пишете на C++?
Обновлено: я должен сказать, я хотел бы иметь возможность добавить эту страницу в закладки и использовать ее в качестве моей шпаргалки :)





Я держу открытым PDF-файл стандарта C++. Это хорошо для быстрого поиска всех интерфейсов библиотеки (особенно интерфейсов контейнеров и прочего iostream). Это также полезно для быстрого разрешения споров коллег о синтаксисе и семантике C++.
Я еще не понял, как загрузить PDF в свой мозг.
Если вам удастся загрузить PDF-файл в свой мозг, мне тоже будет интересно! :)
Я взял HTML-версию (какое-то время был членом комитета по стандартам) и превратил ее в файл Microsoft Reader. Держите его на моем карманном компьютере для легкого доступа на ходу!
Это хорошая вещь, позволяющая искать, что очень полезно
+1 за это. Программистам, не работающим на C++, это может показаться излишним, но на самом деле это единственный разумный подход к языку.
На самом деле, больше всего меня заставляет переключаться между C# и C++ синтаксис конструктора. (Я все время хочу использовать «новое» для всего).
Специализация шаблона. Мне всегда нужно это искать.
Поскольку я все время работаю на C++, я держу большую часть синтаксиса в голове. Для справки по библиотеке я использую книгу sgi и Josuttis '. Когда я какое-то время не занимался C++ и действительно хочу освежиться, я возвращаюсь к Эффективный C++.
Когда мне нужно ответить на более глубокий вопрос, я обращусь к стандартной книге или книге Страуструпа.
Когда ничего не помогает, Google и stackoverflow - отличные инструменты.
Каждый раз, когда мне приходится это делать, мне нужно искать это. На самом деле все, что связано с деталями указателя функций, всегда имеет тенденцию настраивать мой мозг. Я считаю, что Учебные пособия по указателям на функции - довольно хороший справочник.
Больше, чем я хотел бы признать для нашей внутренней реализации сигналов. Я мог бы использовать ускорение для некоторых из них, но некоторые проекты не позволяют этого. :(
Пользуюсь сайтом cplusplus.com. Это отличный справочник по программированию на C и C++.
Собственно, это не.
В моей Cheatsheet C (и на C++ по расширению) указатель на синтаксис функции.
Для C++ синтаксис указателя на функцию-член - это то, что мне всегда нужно искать, когда я его использую.
Не совсем в шпаргалке и не совсем специфичен для C++, но у меня есть "Очистить буфер!" на стикере, чтобы напомнить мне о том, что, вероятно, не так, когда я не получаю данные.
У меня есть небольшая копия диаграммы приоритета операторов, прикрепленная к стене моего куба.
Когда я снова переключаюсь с Java на C++, мне нравится просматривать элементы из Стандарты кодирования C++ Херба Саттера и Андрея Александреску.
Серия Эффективный C++ Скотта Мейерса также отлично подходит для этого.
Вот несколько простых вещей, которые мне подходят:
std::swap()const * означает постоянные данные, * const означает постоянный указатель (прочтите декларацию в обратном направлении!).*this.Base::operator=(rhs); в производном operator=()operator=()operator=(), вызывая конструктор копирования (Herb Sutter, Напишите то, что вы знаете, и знайте, что вы пишете)Справочник Dinkumware Compleat для STL и других стандартных <include> s.
В моей шпаргалке: взаимодействие между константой и указателями:
int * p; // pointer
int const * p; // pointer to const value
int * const p; // const pointer
int const * const p; // const pointer to const value
По сути, разделите объявление на символ *, и если константа упадет влево, указанное значение будет константой, а если оно упадет вправо, сам указатель будет константой.
Я видел отличный ответ на SO о том, как их запоминать, вам просто нужно прочитать их задом наперед. т.е. int * const p - p - это указатель const на int int const * p - p - указатель на const int.
да, это тоже хороший трюк.
Другой способ взглянуть на int const * p: * p is const, т.е. значение по адресу в p является const, а не сам указатель. Аналогичным образом const p подразумевает, что сам указатель является константным.
Это не сложно: const применяется к левой стороне (если там ничего нет, и в этом случае она применяется к правой)
Я держу весь этот сайт под рукой для общих шпаргалок:
http://www.cheat-sheets.org/#CPP
Шпаргалка cpp немного проста, но STL полезен.
Сводная страница TR1 Скотта Мейера, http://www.aristeia.com/EC3E/TR1_info.html
Для тех, кому нужен краткий справочник и резюме, вот шпаргалка по C++.
Мне достаточно доступа к Google и возможности печатать.
По общему признанию, я избалован почти гарантированным доступом в Интернет в моей рабочей среде. Если это не удается по какой-либо причине, у меня тоже лежат все три стандартных PDF-файла.
Обратной стороной этого является высокое соотношение предположений и знаний во время разделов вопросов и ответов на собеседованиях на C++. Плюс в том, что я очень хорошо выполняю свою работу. :П
Что касается операторов, то cpp.operator-precedence.com