Лучшее руководство РїРѕ программированию Рё справочник РїРѕ языку, полностью пересмотренное Рё обновленное РїРѕРґ стандарт РЎ++11!Р'С‹ держите РІ руках РЅРѕРІРѕРµ издание популярного Рё исчерпывающего бестселлера РїРѕ языку программирования РЎ++, которое было полностью пересмотрено Рё обновлено РїРѕРґ стандарт РЎ++11. РћРЅРѕ поможет вам быстро изучить язык Рё использовать его весьма эффективными Рё передовыми способами. Р' соответствии СЃ самыми передовыми Рё современными методиками изложения материала авторы демонстрируют использование базового языка Рё его стандартной библиотеки для разработки эффективного, читабельного Рё мощного РєРѕРґР°.РЎ самого начала этой РєРЅРёРіРё читатель знакомится СЃРѕ стандартной библиотекой РЎ++, ее самыми популярными функциями Рё средствами, что позволяет сразу же приступить Рє написанию полезных программ, еще РЅРµ овладев всеми нюансами языка. Большинство примеров РёР· РєРЅРёРіРё было пересмотрено так, чтобы использовать новые средства языка Рё продемонстрировать РёС… наилучшие СЃРїРѕСЃРѕР±С‹ применения. Эта РєРЅРёРіР° — РЅРµ только проверенное руководство для новичков РІ РЎ++, РѕРЅР° содержит также авторитетное обсуждение базовых концепций Рё методик языка РЎ++ Рё является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать РѕР± усовершенствованиях РЎ++11.Стенли Р'. Липпман работал старшим консультантом РІ Jet Propulsion Laboratory, архитектором РіСЂСѓРїРїС‹ Visual РЎ++ корпорации Microsoft, техническим сотрудником Bell Laboratories Рё главным инженером- программистом РїРѕ анимации РІ кинокомпаниях Disney, DreamWorks, Pixar Рё PDI.Р–РѕР·Рё Лажойе, работающий ныне РІ кинокомпании Pixar, был членом канадской РіСЂСѓРїРїС‹ разработчиков компилятора C/C++ корпорации IBM, Р° также возглавлял рабочую РіСЂСѓРїРїСѓ базового языка РЎ++ РІ составе международной организации РїРѕ стандартизации ANSI/ISO.Барбара Р. РњСѓ имеет почти тридцатилетний опыт программирования. РќР° протяжении пятнадцати лет РѕРЅР° работала РІ компании AT&T, сотрудничая СЃ Бьярне Страуструпом, автором языка РЎ++, Рё несколько лет руководила РіСЂСѓРїРїРѕР№ разработчиков РЎ++.• Узнайте, как использовать новые средства языка РЎ++11 Рё стандартной библиотеки для быстрого создания надежных программ, Р° также ознакомьтесь СЃ высокоуровневым программированием• Учитесь РЅР° примерах, РІ которых показаны передовые стили программирования Рё методики проектирования• Р
Барбара Э. Му , Жози Лажойе , Стенли Б. Липпман
Программирование, программы, базы данных18+Язык программирования C++
Пятое издание
Посвящается Бет, благодаря которой стало возможным написание этой и всех остальных книг.
Посвящается Дэниелю и Анне, для которых возможно практически все.
Посвящается Марку и маме, за их безграничную любовь и поддержку.
Посвящается Энди, научившему меня программированию и многому другому.
Введение
Благодаря предыдущим изданиям книги язык С++ изучило множество программистов. За истекшее время язык С++ претерпел существенные усовершенствования, а основное внимание сообщества программистов переместилось главным образом с эффективности использования аппаратных средств к эффективности программирования.
В 2011 году комитет по стандартам С++ выпустил новую основную версию стандарта ISO С++. Этот пересмотренный стандарт является последним этапом развития языка С++, его основное внимание уделено эффективности программирования. Основные задачи нового стандарта таковы.
• Сделать язык более единообразным, упростить его преподавание и изучение.
• Упростить, обезопасить и повысить эффективность использования стандартных библиотек.
• Облегчить написание эффективных абстракций и библиотек.
Это издание книги полностью пересмотрено так, чтобы использовать последний стандарт языка. Просмотрев раздел "Новые средства С++11" после оглавления, вы можете получить представление о том, насколько сильно новый стандарт повлиял на язык С++. Там перечислены только те разделы, в которых рассматривается новый материал.
Некоторые из нововведений в новом стандарте, такие как ключевое слово auto
для выведения типов, весьма распространены. Эти средства существенно облегчают чтение кода в данном издании и делают его понятней. Программисты, конечно, могут игнорировать те средства, которые облегчают концентрацию на том, что программа призвана делать. Другие новшества, такие как интеллектуальные указатели и контейнеры с поддержкой перемещения, позволяют писать более сложные классы без необходимости справляться со сложностями управления ресурсами. В результате мы можем начать изучение создания собственных классов намного раньше, чем в предыдущем издании. Мы (и вы) больше не должны волноваться о большинстве деталей, которые стояли на нашем пути в предыдущем стандарте.
Можно считать, что современный язык С++ состоит из трех частей.
• Низкоуровневый язык, большая часть которого унаследована от языка С.
• Дополнительные возможности языка, позволяющие определять собственные типы данных, организовать крупномасштабные программы и системы.
• Стандартная библиотека, использующая эти дополнительные возможности для обеспечения набора структур данных и алгоритмов.
В большинстве книг язык С++ представлен в порядке его развития. Сначала они знакомят с частью С в языке С++, а в конце книги представляются более абстрактные средства С++ как дополнительные возможности. У этого подхода есть две проблемы: читатели могут увязнуть в подробностях, унаследованных от низкоуровневого программирования, и сдаться. Те же, кто будет упорствовать в изучении, наживут плохие привычки, от которых впоследствии придется избавляться.
Мы придерживаемся противоположного подхода: с самого начала используем средства, которые позволяют программистам игнорировать детали, унаследованные от низкоуровневого программирования. Например, мы вводим и используем библиотечные типы string
и vector
наряду со встроенными цифровыми типами и массивами. Программы, которые используют эти библиотечные типы, проще писать, проще понимать, и ошибок в них много меньше.