Читать «Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14» онлайн - страница 10

Скотт Мейерс

Новый стандарт С++ в общем случае сохраняет корректность кода, написанного для более старого стандарта, но иногда Комитет по стандартизации не рекомендует применять те или иные возможности. Такие возможности находятся в “камере смертников” стандартизации и могут быть убраны из новых версий стандарта. Компиляторы могут предупреждать об использовании программистом таких устаревших возможностей (но могут и не делать этого), но в любом случае их следует избегать. Они могут не только привести в будущем к головной боли при переносе, но и в общем случае они ниже по качеству, чем возможности, заменившие их. Например, std::auto_ptr не рекомендуется к применению в C++11, поскольку std::unique_ptr выполняет ту же работу, но лучше.

Иногда стандарт гласит, что результатом операции является неопределенное поведение (undefined behavior). Это означает, что поведение времени выполнения непредсказуемо, и от такой непредсказуемости, само собой разумеется, следует держаться подальше. Примеры действий с неопределенным поведением включают использование квадратных скобок ([]) для индексации за границами std::vector, разыменование неинициализированного итератора или гонку данных (т.е. когда два или более потоков, как минимум один из которых выполняет запись, одновременно обращаются к одному и тому же месту в памяти).

Я называю встроенный указатель, такой как возвращаемый оператором new, обычным указателем (raw pointer). Противоположностью обычному указателю является интеллектуальный указатель (smart pointer). Интеллектуальные указатели обычно перегружают операторы разыменования указателей (operator-> и operator*), хотя в разделе 4.3 поясняется, что интеллектуальный указатель std::weak_ptr является исключением.

Замечания и предложения

Я сделал все возможное, чтобы книга содержала только ясную, точную, полезную информацию, но наверняка есть способы сделать ее еще лучшей. Если вы найдете в книге ошибки любого рода (технические, разъяснительные, грамматические, типографские и т.д.) или если у вас есть предложения о том, как можно улучшить книгу, пожалуйста, напишите мне по адресу [email protected]. В новых изданиях книги ваши замечания и предложения обязательно будут учтены.

Список исправлений обнаруженных ошибок можно найти по адресу http://www.aristeia.com/BookErrata/emc++-errata.html.

От редакции

Редакция выражает признательность профессору университета Иннополис E. Зуеву за обсуждения и советы при работе над переводом данной книги.

Ждем ваших отзывов!

Вы, читатель этой книги, и есть главный ее критик. Мы ценим ваше мнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше и что еще вы хотели бы увидеть изданным нами. Нам интересны любые ваши замечания в наш адрес.