Бьерна страуструпа язык программирования с – Книга: «Язык программирования С++. Специальное издание» — Бьерн Страуструп. Купить книгу, читать рецензии | The C++ Programming Language. Special Edition | ISBN 978-5-9518-0425-9

Страуструп, Бьёрн — Википедия

Материал из Википедии — свободной энциклопедии

Бьёрн Страуструп (устоявшееся написание; точная транскрипция дат. Bjarne Stroustrup, ˈbjɑːnə ˈsdʁʌʊ̯ˀsdʁɔb — Бьярне Строуструп[1]; род. 30 декабря 1950, Орхус, Дания) — программист, автор языка программирования C++.

Бьёрн родился и вырос в городе Орхусе. Поступил в Орхусский университет (Дания) на отделение информатики. Закончив его (1975), он получил степень магистра. Позже защитил диссертацию доктора философии по информатике в Кембриджском университете (1979), работая над конструированием распределённой системы в компьютерной лаборатории Кембриджского университета. Член колледжа Черчилля.

В 1979 году Страуструп вместе со своей женой и дочерью переехал в Нью-Джерси, чтобы пойти работать в компьютерный научно-исследовательский центр «Bell Telephone Laboratories». В этом же году у него родился сын Николас.

Со дня основания до закрытия в 2002 году, когда произошло объединение с отделением научных исследований Техасского университета A&M, Бьёрн был главой отдела исследований в области крупномасштабного программирования (Large-scale Programming Research department) в компании AT&T Bell Labs.

С++[править | править код]

Основная статья: C++

Бьёрн Страуструп разработал язык программирования C++.[2] Он поддерживает объектно-ориентированное программирование. Страуструп стал первопроходцем в области использования объектно-ориентированной и обобщённой парадигм программирования в области создания программных приложений, где эффективность является приоритетным свойством, таких как симуляторы, графика, пользовательские интерфейсы, прикладные системы, системы для научных вычислений.

Научная и общественная деятельность[править | править код]

Книга Страуструпа «Язык программирования C++» — одна из самых широко читаемых книг из своей области, которая была переведена на 19 языков. Следующая книга, «Дизайн и эволюция C++», открыла много нового в описании языков программирования: новые идеи, идеалы, проблемы. В дополнение к своим пяти книгам Страуструп опубликовал более сотни академических и других популярных статей.

Бьёрн принимал активное участие в создании стандарта ANSI/ISO для C++ и продолжает работу по поддержанию и пересмотру стандарта.

В 1990 году «Справочное руководство по языку программирования С++ с комментариями» («The Annotated C++ Reference Manual») получило награду за непревзойдённое мастерство в области технической документации, по мнению журнала «Dr. Dobb’s Journal». По мнению этого же журнала, в 1994 году книга «Дизайн и эволюция С++» получила награду «Productivity Award» за помощь программистам в совершенствовании их исходных кодов[3].

Бьёрн Страуструп был избран членом Национальной инженерной академии США («National Academy of Engineering») в 2004 году за «создание языка С++». Как первый компьютерный учёный, он был награждён («William Procter Prize for Scientific Achievement from Sigma Xi») американским научно-исследовательским сообществом в 2005 году. Бьёрн Страуструп работает в «AT&T Bell Laboratories» и AT&T. Кроме того, Страуструп является членом Техасской академии медицины, инженерного дела и науки (англ. Texas Academy of Medicine, Engineering, and Science). Бьёрн Страуструп был назван журналом «Fortune magazine» одним из «двенадцати лучших молодых американских учёных»[4]. Почётный доктор НИУ ИТМО (2013).

Персона. Создатель С++ Бьярне Страуструп, который «никогда не любил» языки программирования

У создателя С++ было очень мало шансов «выйти в люди»: бедная семья, худшая школа в городе, отсутствие якро выраженных склонностей к чему-либо. Он даже не был «гениален».

Это человек, которого можно назвать self-made. Его главной целью было добиться настоящего успеха в чем бы то ни было.

Возможно, всем нам повезло, что его «занесло» в программирование. Потому что сейчас очень трудно представить современную ИТ-индустрию без наследия С++.

Бьярне Страуструп родился 30 декабря 1950 года в датском городе Орхус. Это второй по величине (250 тысяч жителей) город Дании, расположенный на восточном побережье Ютландии.

Несмотря на то, что его родители не были «академиками», он отлично учился в школе. Хотя, как потом выяснил Бьярне, это была одна из худших школ в городе.

В детстве будущий инженер любил играть в футбол, кататься на велосипеде. Кроме того, он был бойскаутом. Как большинство мальчиков в то время, Страуструп подрабатывал доставкой газет и молока.

После окончания школы он все-таки поступил в местный Университет на отделение компьютерных технологий. Бьярне допускал, что мог бы стать и архитектором, и историком, и социологом. Но в конце концов он остановился на математике и компьютерных науках. На его решение повлиял школьный учитель математики, который привил мальчику любовь к этой науке.

Университет

Он впервые познакомился с компьютером уже в стенах ВУЗа. Algol-60 был первым языком программирования, который выучил Бьярне.

Орхусский университет входил в ТОП-100 высших учебных заведений мира. Страуструп со страхом думал о том, что ему придется работать учителем математики, если не найдется работа в сфере программирования. Он был убежден, что математика должна иметь практическое приложение.

Однако на втором курсе он понял, что программирование, и компьютерные технологии в целом, – это не только и не столько математика. Кроме того, оказалось, что Бьярне был не так хорош в математике, как он думал.

В одном из интервью Страуструп обозначил свою позицию по поводу обучения программированию:

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

В университетские годы Страуструп подрабатывал тем, что писал небольшие программы для подразделения компании Burroughs в Орхусе. Тогда он понял, что коммерческая разработка имеет мало общего с написанием программ для себя или друзей, и тем более, с выполнением лабораторных работ в ВУЗе. Бьярне получил опыт общения с пользователями, опыт поддержки и сопровождения кода.

Часть вырученных денег студент тратил на оплату собственного обучения. Помимо того, что он принес пользу себе, его разработки помогли вывести компанию на новый уровень: Burroughs в дальнейшем объединилась с Sperry, в результате чего образовалась компания Unisys – мировой производитель комплексных программно-аппаратных решений.

Кроме того, студент разрабатывал ПО и для нужд университета. В 1975 году Страуструп окончил его и получил степень магистра.

Кембридж

Ближе к концу обучения Бьярне заинтересовался микропрограммированием. Интерес усилился после стажировки в Кембридже. Поэтому Страуструп переехал в Англию, чтобы продолжить свое образование в Кембриджском университете. Там было все необходимое оборудование для изысканий в области микропрограммирования.

Кроме того, новый университет помог ему повысить требования к себе. В этом ВУЗе уровень студентов и педагогов был намного выше, чем в орхусском университете. Это мотивировало Страуструпа развиваться активнее.

В Кембридже, в Вычислительной лаборатории, он занимался проектированием распределенных систем. В 1979 году Бьярне получил докторскую степень.

В этом же году Страуструп вместе с женой Мэриэн переехал в Нью-Джерси (США), где стал работать в Центре компьютерных исследований фирмы Bell Labs. В то время фирма была в «дружеских» отношениях с Кембриджским университетом.

С++

Когда Страуструп занимался исследованиями в фирме, ему потребовалось написать несколько имитационных программ для моделирования распределенных вычислений. SIMULA-67 — объектно-ориентированный язык – мог бы стать идеальным инструментом для решения подобных задач, если бы не его сравнительно низкая скорость выполнения программ. К слову, этот язык Бьярне использовал еще во время написания своей диссертации в Кембридже – там он разрабатывал симулятор распределенных систем.

До этого в сферу интересов Страуструпа не входила разработка языков программирования. Его интересовало микропрограммирование, операционные системы, архитектура вычислительных машин, разработка виртуальных машин. Правда, еще до окончания университета он успел изучить двадцать языков программирования. Но несмотря на это, Бьярне утверждает, что большого интереса к языкам он все-таки не испытывал.

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

Если вам приходится выбирать между написанием «хорошего» и «быстрого» кода, значит, здесь что-то не так. Потому что «хороший» код должен быть «быстрым», – объясняет Страуструп свою позицию в интервью.

Так был создан язык программирования С++, первоначально получивший название «Си с классами» (С with classes). Название «С++» придумал Рик Мэсчитти. «++» — это оператор инкремента в С, который как бы намекает на то, что язык С++, нечто больше, чем просто С.

В 1983 году язык подвергся значительным изменениям. Страуструп разработал свой язык таким образом, чтобы код не компилировался в машинный язык, а преобразовывался в набор команд препроцессора языка С. Это открывало к нему доступ сотням тысяч С-программистов, имевших соответствующий компилятор.

В 1984 году Bell Labs была реорганизована и получила название AT&Т Bell Labs. Первыми, кому фирма предложила С++, причем практически бесплатно, стали университеты.

В 1985 году Страуструп опубликовал одну из самых широко известных книг «Язык программирования С++», которая выдержала четыре издания (1985, 1991, 1997, 2000), и была переведена на 19 языков.

Как пишет Том Даффи: «Множество открытий обязаны своим происхождением случаю. Но есть и немало других, которые стали возможны благодаря кропотливой работе и предвидению. Язык программирования С++, впервые предложенный лабораторией Bell Labs университетам в 1985 году, безусловно относится ко второй категории».

Формирование сообщества

Язык быстро нашел свою аудиторию. В 1987 году на конференции по С++ собралось 200 человек. На следующий год число участников возросло до 600, а в начале 90-х годов число разработчиков на С++ приближалось к 500 тысячам. Это сделало данный язык мировым лидером по скорости распространения.

В 1990 году вышла очередная книга Страуструпа – «Справочное руководство по языку программирования С++ с комментариями» (The Annotated C++ Reference Manual), которая в дальнейшем была удостоена награды за непревзойдённое мастерство в области технической документации по мнению журнала Dr. Dobb’s Journal.

Кроме того, по версии журнала Fortune magazine Страуструп был признан одним из «двенадцати лучших молодых американских учёных».

Страуструп тем временем продолжал работать в AT&Т Bell Labs, где возглавлял подразделение широкомасштабных программных исследований, активно занимался совершенствованием своего языка и созданием его стандарта. Стандарт ANSI/ISO С++ был выпущен в 1999 году.

Страуструп был главой отдела исследований программирования в Bell Labs с 1995 по 2002 год.

Бьярне Страуструп – о C/С++

«Я придумал C++, записал его первоначальное определение и выполнил первую реализацию. Я выбрал и сформулировал критерии проектирования C++, разработал его основные возможности и отвечал за судьбу предложений по расширению языка в комитете по стандартизации C++, – писал его автор. – Язык C++ многим обязан языку C, и язык C остается подмножеством языка C++ (но в C++ устранены несколько серьезных брешей системы типов C). Я также сохранил средства C, которые являются достаточно низкоуровневыми, чтобы справляться с самыми критическими системными задачами. Язык C, в свою очередь многим обязан своему предшественнику – BCPL».

В 2003 году в интервью Страуструп рассказал о своем отношении к проблемам совместимости С и С++:

Я думаю, что существующие проблемы несовместимости С и С++ – самое ужасное, что могло произойти в истории этих языков. В идеале эти языки нужно объединить. И мне кажется, это технически реализуемо только при условии внесения изменений в оба языка. Однако из-за нежелания вносить эти изменения языки продолжают отдаляться друг от друга, отравляя жизнь практически каждому C- и С++-разработчику.

Я пытаюсь заставить людей увидеть положительные стороны в объединении. Я написал серию статей на эту тему. Но кто-то заинтересован в том, чтобы этого не произошло. Кроме того, я не вижу большого интереса и со стороны сообщества. Наверное, большинство, как обычно, надеется на то, что все «само рассосется».

После AT&Т Bell Labs


С 2002 года Бьярне является профессором техасского университета A&M (Texas A&M University). Он проработал в индустрии почти в четверть века, поэтому ему есть, что сказать студентам.

Кроме того, он сотрудничает с Колумбийским университетом как приглашенный педагог-профессор компьютерных наук.

В 2014 году Бьярне предложил работу один из крупнейших финансовых конгломератов мира – Morgan Stanley.

Страуструп начал сотрудничать с этой фирмой, так как решил вернутся из сферы чистой педагогики к решению реальных проблем. Его огромный опыт оказался полезен банку Morgan Stanley при решении вопросов, связанных с производительностью, надежностью и безопасностью.

Кроме того, он хотел переехать в Нью-Йорк, чтобы быть ближе к детям и внукам.

Бьярне Страуструп был избран членом Национальной Академии Инженерии в США («National Academy of Engineering») в 2004 году с формулировкой «за создание языка С++». Как первый компьютерный учёный, он получил награду («William Procter Prize for Scientific Achievement from Sigma Xi») американского научно-исследовательского сообщества в 2005 году. Он также получил награду компьютерного сообщества IEEE «за начало разработки и коммерциализации объектно-ориентированной технологии создания программ и за большие изменения, внесённые в бизнес и индустрию».

Проблема с программированием / Проектная школа программирования GoTo corporate blog / Habr

Статья 2006 года.

Бьёрн Страуструп, изобретатель языка программирования C++, защищает свое наследие и рассказывает, что не так с большей частью программного кода.

В 1980-х и 90-х годах Бьёрн Страуструп разработал и внедрил язык программирования C++, который популяризировал объектно-ориентированное программирование и повлиял на многие другие языки программирования, включая Java.

C++ остается архетипическим «высокоуровневым» компьютерным языком (то есть языком, который сохраняет особенности естественного, человеческого языка), и он по-прежнему используется миллионами программистов. Многие из систем и приложений эры ПК и интернета были написаны на C++. Несмотря на это, язык остается спорным, во многом потому что его, как известно, трудно изучать и использовать, а также потому, что дизайн Страуструпа позволяет разработчикам допускать серьезные ошибки программирования в интересах сохранения их свободы.

Страуструп, на протяжении многих лет работающий в AT&T Bell Labs, теперь является профессором компьютерных наук на факультете инженерии в Техасском университете A&M, недалеко от Хьюстона.

Технологический обзор: почему большая часть программного обеспечения настолько плоха?

Бьёрн Страуструп: Некоторые программы на самом деле довольно хороши по любым стандартам. Подумайте о Mars Rovers, Google и проекте “Геном человека”. Это качественное программное обеспечение! Пятнадцать лет назад большинство людей, и в частности большинство экспертов, сказали бы, что каждый из этих примеров невозможен. Наша технологическая цивилизация зависит от программного обеспечения, поэтому, если бы программное обеспечение было бы в действительности таким же плохим, как и его наихудшая репутация, большинство из нас уже были бы мертвы.


С другой стороны, просмотр «типичных» фрагментов кода может заставить меня плакать. Структура ужасающая, и программисты явно не задумывались над правильностью, алгоритмами, структурами данных или ремонтопригодностью. Большинство людей на самом деле не читают код; они просто видят, что Internet Explorer «тормозит».

Я думаю, что реальная проблема заключается в том, что «мы» (то есть разработчики программного обеспечения) находимся в постоянном чрезвычайном положении, хватаясь за соломинку, чтобы выполнить нашу работу. Мы выполняем много маленьких чудес посредством проб и ошибок, чрезмерного использования грубой силы и многих испытаний, но зачастую этого недостаточно.

Разработчики программного обеспечения стали мастерами в сложном искусстве создания достаточно надежных систем из ненадежных частей. Проблема в том, что часто мы не знаем точно, как мы это сделали: система просто «превратилась» в нечто минимально приемлемое. Лично я предпочитаю знать, когда система будет работать, и почему она будет это делать.

Технологический обзор: Как мы можем исправить беспорядок, в котором мы находимся?

Бьёрн Страуструп: Теоретически ответ прост: получше обучите наших разработчиков программного обеспечения, используйте более подходящие методы проектирования и используйте гибкий дизайн, мысля в долгосрочной перспективе. Вознаграждайте правильные, надежные и безопасные системы. Наказывайте за неряшливость.

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

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

Одна из проблем заключается в том, что «академические дымовые трубы» мешают: слишком много людей продвигают какую-то область как панацею. Более эффективные методы проектирования могут помочь, лучшие методы спецификации могут помочь, лучшие языки программирования могут помочь, лучшие технологии тестирования могут помочь, лучшие операционные системы могут помочь, улучшение инфраструктуры среднего уровня, лучшее понимание областей приложений может помочь, лучшее понимание структур данных и алгоритмов могут помочь — и так далее. Например, теория типов, модельная разработка и формальные методы могут, несомненно, оказать значительную помощь в некоторых областях, но продвигаются они лишь как решение для исключения других подходов, каждый из которых гарантирует отказ в крупномасштабных проектах. Люди продвигают то, что знают, и то, что они видели; как иначе? Но только некоторые люди обладают технической зрелостью, чтобы сбалансировать требования и ресурсы.

Технологический обзор: Идея, лежащая в основе C++, заключалась в том, что программисты будут работать более активно в обмен на более эффективный код. Bell Labs захотели использовать язык, который несколько действительно умных людей будут использовать для написания кода, работающего на таких компьютерах, как Electronic Switching Systems (ESS), которые были не очень быстрыми. Сегодня очень много быстрых компьютеров и много разработчиков программного обеспечения. Означает ли это, что это сводит на нет всю суть C++?

Бьёрн Страуструп: C++ не был разработан специально для больших коммутационных аппаратов, он был разработан для огромного спектра приложений. Bell Labs была домом для невероятного спектра интересных проектов, охватывающих все масштабы и использующих практически все виды компьютеров и операционных систем. Но да, среднестатистический программист Bell Labs был значительно более способным в сравнении с мнением большинства людей о «среднестатистическом программисте», а надежность и производительность (в этом порядке) считались значительно более важными, чем в большинстве других мест.

Производительность по-прежнему остается проблемой во многих приложениях, которые меня интересуют: быстрота реагирования интерфейсов, время запуска и закрытия приложений. Разработчики программного обеспечения нейтрализуют поразительную производительность современного компьютерного оборудования, добавляя избыточные (программные) абстракции слой за слоем. Похоже, что мы столкнулись с ограничениями линейного ускорения для аппаратного обеспечения, но во многих случаях мы могли выиграть пару порядков величин у программного обеспечения.

Тем не менее, C++ действительно стал слишком «дружелюбным по отношению к экспертам» в то время как уровень эффективного формального образования среднестатистического разработчика программного обеспечения снизился. Тем не менее, решение заключается не в том, чтобы упростить до абсурда языки программирования, а в том, чтобы использовать различные языки программирования и обучать больше экспертов. Этим экспертам нужно использовать какие-то языки, а C++ — один из этих языков.

Технологический обзор: В ретроспективе, при проектировании C++, не было ли ваше решение обменять эффективность программного обеспечения, его безопасность и надежность на производительность кода во время выполнения, фундаментальной ошибкой?

Бьёрн Страуструп: Ну, я не думаю, что я сделал такой обмен. Я хочу элегантный и эффективный код. Иногда я это понимаю. Эти дихотомии (между эффективностью и правильностью, эффективностью и временем программиста, эффективностью по сравнению с высоким уровнем и т. д.) являются фиктивными.

То, что я действительно делал, — это разработал C++, как прежде всего язык системного программирования: я хотел иметь возможность писать драйверы устройств, встроенные системы и другой код, который должен был использовать непосредственно. Затем я хотел, чтобы C++ был хорошим языком для разработки инструментов. Это требовало гибкости и производительности, а также способности выразить элегантные интерфейсы. Мое мнение заключалось в том, что для создания более высокого уровня, для создания полных приложений вам сначала нужно было покупать, строить или заимствовать библиотеки, предоставляющие соответствующие абстракции. Часто, когда у людей возникают проблемы с C++, реальная проблема заключается в том, что у них нет соответствующих библиотек или они не могут найти доступные библиотеки.

Другие языки пытались более непосредственно поддерживать приложения высокого уровня.

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

Технологический обзор: Как вы объясняете тот факт, что C++ широко критикуется и многими программистами, но в то же время очень широко используется? Почему этот язык настолько успешен?

Бьёрн Страуструп: Ответ прост: есть только два вида языков: те, на которые жалуются все, и те, которые никто не использует.

Есть более полезные системы, разработанные на языках, которые считаются ужасными, чем на языках, которые хвалили за то, что они красивы — и многое другое. Цель языка программирования — помочь создать хорошие системы, где «хорошее» можно определить разными способами. Мое краткое определение: что-то правильное, поддерживаемое и достаточно быстрое. Эстетика имеет значение, но в первую очередь язык должен быть полезен; он должен позволить программистам этого мира выражать реалистичные идеи лаконично и недорого.

Основная причина успеха C++ заключается в том, что он отвечает ограниченным целям дизайна: он может эффективно выражать огромный спектр идей напрямую.

C++ не был предназначен для того, чтобы делать только одну вещь действительно хорошо или не позволять людям делать вещи, которые считаются «плохими». Вместо этого я сосредоточился на общности и производительности.

Я уверен, что на каждого программиста, который не любит C++, найдется тот, кому этот язык нравится. Однако мой друг отправился на конференцию, где основной докладчик попросил аудиторию продемонстрировать, поднимая руки: первое, сколько людей не любили C++, и второе, сколько людей написали программу на C++. В первой группе было вдвое больше людей, чем во второй. Выражение неприязни к чему-то, чего вы не знаете, обычно называют предрассудками. Кроме того, те, кто жалуются, всегда громче и увереннее, чем сторонники — разумные люди признают недостатки. Я думаю, что я знаю больше о проблемах с C++, чем о ком-либо вообще, но я также знаю, как их избежать и как использовать сильные стороны этого языка.

И, конечно, вы не ожидаете, что сторонники языков, которые проиграли в соревновании с C++, будут вежливы по отношению к этому факту. Разработка программного обеспечения не имеет такой степени профессионализма, хотя я надеюсь, что в конечном итоге это произойдет. В этом отношении наука отличается: когда выигрывает новый инструмент, техника или теория, люди видят это как прогресс. В программном обеспечении вклад конкурентов и предшественников не получил широкого признания, оценки или даже понимания.

Технологический обзор: В “Дизайне и эволюции C++” вы утверждаете, что Кьеркегор оказал влияние на вашу концепцию языка. Это шутка?

Бьёрн Страуструп: Возможно немного претенциозное заявление, но не шутка. Многие размышления о разработке программного обеспечения сосредоточены на группе, команде, компании. Это часто делается до такой степени, что человек полностью погружен в корпоративную «культуру» без выхода для уникальных талантов и навыков. Корпоративная практика может быть враждебной по отношению к людям с исключительными навыками и инициативой по техническим вопросам. Я считаю такое управление технарями жестоким и расточительным. Кьеркегор был сильным сторонником индивидуума против «толпы» и серьезно поднял вопрос важности эстетики и этического поведения. Я не мог указать на конкретную особенность языка и сказать: «Видите, есть влияние философа девятнадцатого века», но он является одним из корней моего нежелания устранять «уровень экспертного уровня», отменять «злоупотребление» и ограничивать возможности поддержки только тех приложений, которые, как я знаю, будут полезными. Тем не менее, я не особенно люблю религиозную философию Кьеркегора.

Технологический обзор: О чем вы жалеете больше всего?

Бьёрн Страуструп: Ни о чем не жалею! Ну, конечно, я мечтаю о том, что я мог бы сделать по-другому и лучше, но серьезно, кто я такой, чтобы переоткрыть, скажем, винтаж Бьёрна 1984 года? Возможно, он был менее опытным, чем я, но он был не менее умным, вероятно, умнее, и он лучше понимал слова 1984 года, чем я. C++ используется для создания многих систем, которые улучшают нашу жизнь, и это оказало значительное положительное влияние на более поздние языки и системы. Это то, чем можно гордиться.

Бьярн Страуструп — Язык программирования C++

Бьерн Страуструп.

Язык программирования С++

ПРЕДИСЛОВИЕ

«А дорога идет все дальше и дальше» (Бильбо Бэгинз)

Как было обещано в первом издании книги, запросы пользователей определили развитие С++. Его направлял опыт широкого круга пользователей, работающих в разных областях программирования. За шесть лет, отделяющих нас от первого издания описания С++, число пользователей возросло в сотни раз. За эти годы были усвоены многие уроки, были предложены и подтвердили практикой свое право на существование различные приемы программирования. О некоторых из них и пойдет речь ниже.

Сделанные за эти шесть лет расширения языка прежде всего были направлены на повышение выразительности С++ как языка абстракции данных и объектно-ориентированного программирования вообще и как средства для создания высококачественных библиотек с пользовательскими типами данных в

частности. Библиотекой высокого качества мы считаем библиотеку, позволяющую пользователю определять с помощью классов понятия, работа с которыми сочетает удобство, эффективность и надежность. Под надежностью понимается то, что класс предоставляет защищенный по типам интерфейс между пользователями библиотеки и ее разработчиками. Эффективность предполагает, что использование классов не влечет за собой больших накладных расходов по памяти или времени по сравнению с «ручными» программами на С.

Эта книга является полным описанием языка С++. Главы с 1 по 10 представляют собой учебник, знакомящий с языком. В главах с 11 по 13 обсуждаются вопросы проектирования и развития программного обеспечения. Завершается книга справочным руководством по языку С++. Естественно, что все расширения языка и способы их использования, которые появились после выхода в свет первого издания, являются частью изложения. К ним относятся уточненные правила для разрешения перегрузки имени, средства управления памятью и средства контроля доступа, надежная по типам процедура связывания, статические и постоянные функции-члены, абстрактные классы, множественное наследование, шаблоны типов и обработка особых ситуаций.

С++ является языком программирования общего назначения. Естественная для него область применения — системное программирование, понимаемое в широком смысле этого слова. Кроме того, С++ успешно используется во многих областях приложения, далеко выходящих за указанные рамки. Реализации С++ теперь есть на всех машинах, начиная с самых скромных микрокомпьютеров — до самых больших супер-ЭВМ, и практически для всех операционных систем. Поэтому книга дает лишь описание собственно языка, не объясняя особенности конкретных реализаций, среды программирования или библиотек.

Читатель найдет в книге много примеров с классами, которые, несмотря на несомненную пользу, можно считать игрушечными. Такой стиль изложения позволяет лучше выделить основные понятия и полезные приемы, тогда как в настоящих, законченных программах они были бы скрыты массой деталей. Для большинства предложенных здесь классов, как то связанные списки, массивы, строки символов, матрицы, графические классы, ассоциативные массивы и т.д., — приводятся версии «со 100% гарантией» надежности и правильности, полученные на основе классов из самых разных коммерческих и некоммерческих программ. Многие из «промышленных» классов и библиотек получились как прямые или косвенные потомки игрушечных классов, приводимых здесь как примеры.

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

Разработчик С++ Бьёрн Страуструп / Habr

Бьёрн Страуструп — родился 11 июня 1950 в датском городе Орхус.
После окончания школы поступил в Университет Ааргус на отделение компьютерных технологий. В 1975 году окончил его и получил степень магистра.
В дальнейшем продолжил свое образование в Кембриджском университете Англии.
В Кембридже, в Вычислительной лаборатории, он занимался проектированием распределенных систем, и в 1979 году ему была присуждена степень доктора философии.
В этом же году Страуструп вместе с семьей переехал в Нью-Джерси (США), где стал работать в Центре компьютерных исследований фирмы Bell Labs. Когда он занимался исследованиями в фирме, Бьёрну Страуструпу потребовалось написать несколько имитационных программ. SIMULA-67 — первый объектно-ориентированный язык для моделирования мог бы быть идеальным для подобных задач, если бы не его сравнительно низкая скорость выполнения программ.
В Нью-Джерси у него рождаестя сын и он начинает больше времени уделять семье.
SIMULA-67 и BCPL(Basic Combined Programming Language) не устраивал Бьёрна и он начинает свою работу над «Си» дополнив его классами.
Первоначально название так и было «Си с классами» (С with classes)
В 1983 году язык подвергся значительным изменениям и получил название С++. Название придумал Рик Мэсчитти. Термин С++ — это оператор инкремента в С, который как бы намекает на то, что язык С++, нечто больше, чем просто «Си».
Страуструп разработал свой язык таким образом, чтобы он препроцессировался в С, а не компилировался в машинный язык, что открывало к нему доступ сотням тысяч пользователей С, имевших соответствующий компилятор.

В 1984 году фирма Bell Labs была реорганизована и получила название AT & Т Bell Labs. Первыми, кому фирма предложила С++, причем практически безо всякой оплаты, стали университеты. Это произошло в 1985 году. Для того чтобы смягчить положение, Страуструп одновременно опубликовал одну из самых широко известных книг «Язык программирования С++», которая выдержала четыре издания(1985, 1991, 1997, 2000), и была переведена на 19 языков.
Язык быстро нашел свою аудиторию. В 1987 году на конференции по С++ собралось 200 человек. На следующий год, по словам Кенига, число участников возросло до 600, а в начале 90-х годов число пользователей, по его же оценкам, приближалось к полумиллиону. Это сделало данный язык мировым лидером по скорости распространения.

В 1990 году выходит его очередная книга «Справочное руководство по языку программирования С++ с комментариями» («The Annotated C++ Reference Manual»)

Которая в дальнейшем была удостоена награды за непревзойдённое мастерство в области технической документации по мнению журнала «Dr. Dobb’s Journal».

Кроме того по версии журнала «Fortune magazine»Страуструп один из «двенадцати лучших молодых американских учёных»

В 1993 году его награждают премией имени Грейс Мюррей Хоппер.

В 1995 году журналом BYTE он признан — «одним из 20 самых значительных личностей в компьютерной индустрии за последние 20 лет».

Страуструп тем временем продолжал работать в AT & Т Bell Labs, где возглавлял подразделение широкомасштабных программных исследований и активно занимался совершенствованием своего языка и созданием его стандарта. Стандарт ANSI/ISO С++ был выпущен в 1999 году.

Вплоть до 2002 года Страуструп был главой отдела исследований программирования в Bell Labs.

В данное время является профессором техасского университета А&М.


Область не научных интересов — общая история, фотография, музыка и путешествия.

Язык программирования С++ — Бьерн Страуструп

  • Обложка: Бешеный

    Просмотров: 2332

    Бешеный

    Анастасия Шерр

    Он злой, опасный, бешеный.Мне бы держаться от него подальше. Бежать, не оглядываясь…Но лишь один…

  • Обложка: Игра начнется в понедельник (СИ)

    Просмотров: 2076

    Игра начнется в понедельник (СИ)

    Виктория Осадчая

    Что делать, если тебя предал и продал собственный муж? Сопротивляться? Доказывать, что у тебя есть…

  • Обложка: Жемчужина для королей (СИ)

    Просмотров: 1861

    Жемчужина для королей (СИ)

    Оксана Чернышова

    Каждая сказка начинается так. «В некотором царстве, в некотором государстве, жил-был, король. И…

  • Обложка: Игрушка для драконов (СИ)

    Просмотров: 1737

    Игрушка для драконов (СИ)

    Инесса Иванова

    Аннотация к книге «Игрушка для драконов» Я, Эмили, Маг из небогатого, но знатного рода, получила…

  • Обложка: Любовь со вкусом ванили (СИ)

    Просмотров: 1674

    Любовь со вкусом ванили (СИ)

    Ольга Грон

    Мне пришлось бежать накануне своей свадьбы. Скрываясь под чужим именем, на работу устроиться не…

  • Обложка: Босс для няни (СИ)

    Просмотров: 1505

    Босс для няни (СИ)

    Ирина Давыдова

    Я ленивая! Да, я жутко не люблю работать, но зато во мне есть другой плюс – мне нравится возиться с…

  • Обложка: Когда даже ангелы посылают (СИ)

    Просмотров: 1394

    Когда даже ангелы посылают (СИ)

    Дарья Волкова

    Ни он, ни она не планировали отношений, романа или, боже упаси, брака. Он мотается по всему миру,…

  • Обложка: Департамент Правосудия (СИ)

    Просмотров: 1312

    Департамент Правосудия (СИ)

    Alexandera Bender

    Потеряв работу, Дарья отчаялась найти новую. Несколько месяцев девушка безуспешно ходила на…

  • Обложка: Мой парень - козел (СИ)

    Просмотров: 1274

    Мой парень — козел (СИ)

    Ника Веймар

    Мне никогда не везло с мужчинами. Вот и очередная «вечная любовь» закончилась незнакомой крашеной…

  • Обложка: Пауки княжеского двора или Как избавиться от невесты (СИ)

    Просмотров: 1232

    Пауки княжеского двора или Как избавиться от невесты (СИ)

    Коварная Ри

    Позвольте представиться!Меня зовут Кэролайн де Вельренс, герцогиня в N-ном поколении, почти…

  • Обложка: Наездница для дракона (СИ)

    Просмотров: 1224

    Наездница для дракона (СИ)

    Энди Бо

    В суровых землях Скаридов живут отважные воины и своенравные женщины, но не они снискали славу…

  • Обложка: Лорд, который влюбился 2 (СИ)

    Просмотров: 1070

    Лорд, который влюбился 2 (СИ)

    Анна Гаврилова

    Я не испугалась — видела, как входим в сотканную из тьмы колонну, но когда магистр остановился,…

  • Обложка: Благословение проклятых дорог (СИ)

    Просмотров: 1058

    Благословение проклятых дорог (СИ)

    Любовь Штаний

    Когда невероятное лучистое счастье оборачивается леденящей пустотой и беспросветной тоской, есть…

  • Обложка: Из космоса с любовью

    Просмотров: 1005

    Из космоса с любовью

    Лана Ежова

    Лучшая подруга предложила отправиться на курортную планету Леран по путевке с суперскидкой.…

  • Обложка: Мне нравится, когда ты злишься (СИ)

    Просмотров: 937

    Мне нравится, когда ты злишься (СИ)

    Escadra

    «Изображать на публику любимую девушку кумира молодежи? А почему бы и нет?»Из-за одной встречи в…

  • Обложка: Отбор для ректора академии (СИ)

    Просмотров: 929

    Отбор для ректора академии (СИ)

    Алекс Анжело

    В его руках — судьбы, сила, магия. Он глава академии с тяжелым характером и холодным сердцем, с…

  • Обложка: Тонкие грани (СИ)

    Просмотров: 907

    Тонкие грани (СИ)

    Слава Доронина

    После смерти единственного близкого человека мой мир перестал быть прежним. А когда в нем появился…

  • Обложка: Наложница не приговор. Влюбить и обезвредить (СИ)

    Просмотров: 893

    Наложница не приговор. Влюбить и обезвредить (СИ)

    Ксения Лестова

    Черная планета лишилась своего светила много лет назад и никто не знал, как можно повернуть время…

  • Обложка: Два красавчика и Я (СИ)

    Просмотров: 762

    Два красавчика и Я (СИ)

    Анна Шварц

    Попасть в ДТП по дороге на собеседование? Могу, умею, практикую! Полмиллиона за разбитый Форд — это…

  • Обложка: Академия магии: "Восставшая" (СИ)

    Просмотров: 756

    Академия магии: "Восставшая" (СИ)

    Зои Дешенель

    Мне казалось, что я умерла… Но судьба решила сыграть со мной совсем другую игру. За все нужно…

  • Обложка: Между ним и тобой (ЛП)

    Просмотров: 745

    Между ним и тобой (ЛП)

    Тиджан

    Он велел мне «остыть».Намекнул, что со мной «что-то не так».Назвал «легкой добычей».И сделал все…

  • Обложка: Полет Дракона (СИ)

    Просмотров: 741

    Полет Дракона (СИ)

    Екатерина Каблукова

    Отправляясь на скучное семейное собрание Веро Амстел и не подозревала, что попадет в самую гущу…

  • Обложка: Танец в живописной технике (СИ)

    Просмотров: 739

    Танец в живописной технике (СИ)

    Анна Владимирова

    Однажды я нарисовала его портрет… Портрет мужчины без будущего, загнанного в угол и связанного по…

  • Обложка: Ведьмы не признают отказов! (СИ)

    Просмотров: 655

    Ведьмы не признают отказов! (СИ)

    Валентина Бэлс

    Каждый, кто хоть раз сталкивался с нашей расой, знает: «Ведьмы не признают отказов!» Это древнее и…

  • Обложка: Любовь в полете (СИ)

    Просмотров: 622

    Любовь в полете (СИ)

    Ася Оболенская

    Она обожает небо и не понимает, как жить без него. Он ненавидит перелеты и совсем не уважает…

  • Обложка: Хамка. Начало

    Просмотров: 514

    Хамка. Начало

    Инна Полежаева

    Диана отличается тем, что не умеет льстить, играть, флиртовать. Не умеет быть удобной для общества.…

  • Обложка: ПМК. Книга 1 (СИ)

    Просмотров: 467

    ПМК. Книга 1 (СИ)

    Рина Ских

    Адриана — боевой маг, представительница правопорядка. Ей удалось задержать опасного преступника,…

  • Обложка: На зов луны (СИ)

    Просмотров: 448

    На зов луны (СИ)

    Алена Райдер

    Луна — она такая холодная, одинокая…Ее округлая форма, яркий желтый цвет,Меня манят, зовут за…

  • C++ читать онлайн, Страустрап Бьярн, Хилл Мюррей, Страуструп Бьерн

    Annotation

    С++ – это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

    Ключевым понятием С++ является класс. Класс – это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. С++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline-подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.

    С++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из С++ программ можно использовать C библиотеки, и с С++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.

    Эта книга предназначена главным образом для того, чтобы помочь серьезным программистам изучить язык и применять его в нетривиальных проектах. В ней дано полное описание С++, много примеров и еще больше фрагментов программ.

    Хилл М., Страустрап Б.

    Предисловие

    Благодарности

    Заметки для Читателя

    Структура Этой Книги

    Замечания по Реализации

    Упражнения

    Замечания по Проекту Языка

    Исторические Замечания

    Эффективность и Структура

    Философские Замечания

    Размышления о Программировании на С++

    Правила Правой Руки*

    Замечания для Программистов на C

    Библиографические Ссылки

    Глава 1 Турне по С++

    1.1 Введение

    1.1.1 Вывод

    1.1.2 Компиляция

    1.1.3 Ввод

    1.2 Комментарии

    1.3 Типы и Описания

    1.3.1 Основные Типы

    1.3.2 Производные Типы

    1.4 Выражения и Операторы

    1.4.2 Операторы Выражения

    1.4.5 Оператор if

    1.4.6 Операторы switch

    1.4.7 Оператор while

    1.4.8 Оператор for

    1.4.9 Описания

    1.5 Функции

    1.6 Структура программы

    1.7 Классы

    1.8 Перегрузка операций

    1.9 Ссылки

    1.10 Конструкторы

    1.11 Вектора

    1.13 Производные классы

    1.14 Еще об операциях

    1.15 Друзья (friend)

    1.17 Полиморфные Вектора

    1.18 Виртуальные Функции

    Глава 2 Описания и Константы

    2.1 Описания

    2.1.1 Область Видимости

    2.1.2 Объекты и Адреса (Lvalue)

    2.1.3 Время Жизни

    2.2 Имена

    2.3 Типы

    2.3.1 Основные Типы

    2.3.2 Неявное Преобразование Типа

    2.3.3 Производные Типы

    2.3.4 Тип void

    2.3.5 Указатели

    2.3.6 Вектора

    2.3.7 Указатели и Вектора

    2.3.8 Структуры

    2.3.9 Эквивалентность типов

    2.3.10 Ссылки

    2.3.11 Регистры

    2.4 Константы

    2.4.1 Целые Константы

    2.4.2 Константы с Плавающей Точкой

    2.4.3 Символьные Константы

    2.4.4 Строки

    2.4.5 Ноль

    2.4.6 Const

    2.4.7 Перечисления

    2.5 Экономия Пространства

    2.5.1 Поля

    2.5.2 Объединения

    2.6 Упражнения

    Глава 3 Выражения и Операторы

    3.1 Настольный калькулятор

    3.1.1 Программа синтаксического разбора

    3.1.2 Функция ввода

    3.1.3 Таблица имен

    3.1.4 Обработка ошибок

    3.1.5 Драйвер

    3.1.6 Параметры командной строки

    3.2 Краткая сводка операций

    3.2.1 Круглые скобки

    3.2.2 Порядок вычисления

    3.2.3 Увеличение и уменьшение*

    3.2.4 Побитовые логические операции

    3.2.5 Преобразование типа

    3.3 Сводка операторов

    3.3.1 Проверки

    3.3.2 Goto

    3.4 Комментарии и Выравнивание

    3.5 Упражнения

    Глава 4 Функции и Файлы

    4.1 Введение

    4.2 Компоновка

    4.3 Заголовочные Файлы

    4.3.1 Один Заголовочный Файл

    4.3.2 Множественные Заголовочные Файлы

    4.3.3 Сокрытие Данных

    4.4 Файлы как Модули

    4.5 Как Создать Библиотеку

    4.6 Функции

    4.6.1 Описания Функций

    4.6.2 Определения Функций

    4.6.3 Передача Параметров

    4.6.4 Возврат Значения

    4.6.5 Векторные Параметры

    4.6.6 Параметры по Умолчанию

    4.6.7 Перегрузка Имен Функций

    4.6.8 Незаданное Число Параметров

    5.3.2 Законченный Класс

    5.4 Друзья и Объединения

    5.4.2 Уточнение* Имени Члена

    5.4.3 Вложенные Классы

    5.4.4 Статические Члены

    5.4.5 Указатели на Члены

    5.4.6 Структуры и Объединения

    5.1 Знакомство и Краткий Обзор

    5.2 Классы и Члены

    5.2.1 Функции Члены

    5.2.2 Классы

    5.2.3 Ссылки на Себя

    5.2.4 Инициализация

    5.2.5 Очистка

    5.2.6 Inline

    5.3 Интерфейсы и Реализации

    5.3.1 Альтернативные Реализации

    5.3.2 Законченный Класс

    5.4 Друзья и Объединения

    5.4.1 Друзья

    5.4.2 Уточнение* Имени Члена

    5.4.3 Вложенные Классы

    5.4.4 Статические Члены

    5.4.5 Указатели на Члены

    5.4.6 Структуры и Объединения

    5.5 Конструкторы и Деструкторы

    5.5.1 Предостережение

    5.5.2 Статическая Память

    5.5.3 Свободная Память

    5.5.4 Объекты Класса как Члены

    5.5.5 Вектора Объектов Класса

    5.5.6 Небольшие Объекты

    5.5.7 Предостережение

    5.5.8 Объекты Переменного Размера

    5.6 Упражнения

    Глава 6 Перегрузка Операций

    6.1 Введение

    6.2 Функции Операции

    6.2.1 Бинарные и Унарные Операции

    6.2.2 Предопределенный Смысл Операций

    6.2.3 Операции и Определяемые Пользователем Типы

    6.3 Определяемое Пользователем Преобразование Типа

    6.3.1 Конструкторы

    6.3.2 Операции Преобразования

    6.3.3 Неоднозначности

    6.4 Константы

    6.5 Большие Объекты

    6.6 Присваивание и Инициализация

    6.7 Индексирование

    6.8 Вызов Функции

    6.9 Класс String

    6.10 Друзья и Члены

    6.11 Предостережение

    6.12 Упражнения

    Глава 7 Производные Классы

    7.1 Введение

    7.2 Производные Классы

    7.2.1 Построение Производного Класса

    7.2.2 Функции Члены

    7.2.3 Видимость

    7.2.4 Указатели

    7.2.5 Иерархия Типов

    7.2.6 Конструкторы и Деструкторы

    7.2.7 Поля Типа

    7.2.8 Виртуальные Функции

    7.3 Альтернативные Интерфейсы

    7.3.1 Интерфейс

    7.3.2 Реализация

    7.3.3 Как Этим Пользоваться

    7.3.4 Обработка Ошибок

    7.3.5 Обобщенные Классы

    7.3.6 Ограниченные Интерфейсы

    7.4 Добавление к Классу

    7.5 Неоднородные Списки

    7.6 Законченная Программа

    7.6.1 Администратор Экрана

    7.6.2 Библиотека Фигур

    7.6.3 Прикладная Программа

    7.7 Свободная Память

    7.8 Упражнения

    Глава 8 Потоки

    8.1 Введение

    8.2 Вывод

    8.2.1 Вывод Встроенных Типов

    8.2.2 Вывод Определяемых Пользователем Типов

    8.2.3 Некоторые Подробности Разработки

    8.2.4 Форматированный Вывод

    8.2.5 Виртуальная Функция Вывода

    8.3 Файлы и Потоки

    8.3.1 Инициализация Потоков Вывода

    8.3.2 Закрытие Потоков Вывода

    8.3.3 Открытие Файлов

    8.3.4 Копирование Потоков

    8.4 Ввод

    8.4.1 Ввод Встроенных Типов

    8.4.2 Состояния Потока

    8.4.3 Ввод Типов, Определяемых Пользователем

    8.4.4 Инициализация Потоков Ввода

    8.5 Работа со Строками

    8.6 Буферизация

    8.7 Эффективность

    8.8 Упражнения

    Справочное Руководство

    2. Договоренности о Лексике

    2.1 Комментарии

    2.2 Идентификаторы (Имена)

    2.3 Ключевые Слова

    2.4 Константы

    2.4.1 Целые Константы

    2.4.2 Явно Заданные Длинные Константы

    2.4.3 Символьные Константы

    2.4.4 Константы с Плавающей Точкой

    2.4.5 Перечислимые Константы

    2.4.6 Описанные Константы

    2.5 Строки

    2.6 Харктеристики Аппаратного Обеспечения

    3. Запись Синтаксиса

    4. Имена и Типы

    4.1 Область Видимости

    4.2 Определения

    4.3 Компоновка

    4.4 Классы Памяти

    4.5 Основные Типы

    4.4 Производные Типы

    6.1 Символы и Целые

    6.2 Float и Double

    6.3 Плавающие и Целые

    6.4 Указатели и Целые

    6.5 Unsigned

    6.6 Арифметические Преобразования

    6.7 Преобразования Указателей

    6.8 Преобразования Ссылок

    7. Выражения

    7.1 Основные Выражения

    7.2 Унарные Операции

    7.2.1 Увеличение и Уменьшение

    7.2.2 Sizeof

    7.2.3 Явное Преобразование Типа

    7.2.4 Свободная Память

    7.3 Мультипликативные Операции

    7.4 Аддитивные Операции

    7.5 Операции Сдвига

    7.6 Операции Отношения

    7.7 Операции Равенства

    7.8 Операция Побитовое И

    7.9 Операция Побитовое Исключающее ИЛИ

    7.10 Операция Побитовое Включающее ИЛИ

    7.11 Операция Логическое И

    7.12 Операция Логическое ИЛИ

    7.13 Условная Операция

    7.14 Операции Присваивания

    7.15 Операция Запятая

    7.16 Перегруженные Операции

    7.16.1 Унарные Операции

    7.16.2 Бинарные Операции

    7.16.3 Особые Операции

    8. Описания

    8.1 Спецификаторы Класса Памяти

    8.2 Спецификаторы Типа

    8.3 Описатели

    8.4 Смысл описателей

    8.4.1 Примеры

    8.4.2 Массивы, Указатели и Индексирование

    8.5 Описания Классов

    8.5.1 Статические Члены

    8.5.2 Функции Члены

    8.5.3 Производные Классы

    8.5.4 Виртуальные Функции

    8.5.5 Конструкторы

    8.5.6 Преобразования

    8.5.7 Деструкторы

    8.5.8 Свободная Память

    8.5.9 Видимость Имен Членов

    8.5.11 Функция Операция

    8.5.13 Объединения

    8.5.14 Поля Бит

    8.5.15 Вложенные Классы

    8.6 Инициализация

    8.6.1 Список Инициализаторов

    8.6.2 Объекты Классов

    8.6.3 Ссылки

    8.6.4 Массивы Символов

    8.7 Имена Типов

    8.8 Typedef – Определение Типа

    8.9 Перегруженные Имена Функций

    8.10 Описания Перечислений

    8.11 Описание Asm

    9.1 Оператор Выражение

    9.2 Составной Оператор, или Блок

    9.3 Условный Оператор

    9.4 Оператор While

    9.5 Оператор Do

    9.6 Оператор For

    9.7 Оператор Switch

    9.8 Оператор Break

    9.9 Оператор Continue

    9.10 Оператор Return

    9.11 Оператор Goto

    9.12 Помеченные Операторы

    9.13 Пустой Оператор

    9.14 Оператор Описание

    11. Командные Строки Компилятора

    11.1 Замена Лексем

    11.2 Включение Файлов

    11.3 Условная Компиляция

    11.4 Управление Строкой

    12. Константные Выражения

    14.1 Выражения

    14.2 Описания

    14.3 Операторы

    14.4 Внешние определения

    14.5 Препроцессор

    15. Отличия от C

    15.2 Сводка Несовместимостей

    15.3 Анахронизмы

    Оставьте комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *