Разрабатывая Си с классами (позднее Си++), Страуструп также написал программу cfront — транслятор, перерабатывающий исходный код Си с классами в исходный код простого Си. Новый язык, неожиданно для автора, приобрёл большую популярность среди коллег и вскоре Страуструп уже не мог лично поддерживать его, отвечая на тысячи вопросов. В 1983 году произошло переименование языка из Си с классами в Си++. Кроме того, в него были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением свободной памятью, улучшенная проверка типов и новый стиль комментариев (//). Его первый коммерческий выпуск состоялся в октябре 1985 года. В 1985 году вышло также первое издание «Языка программирования Си++», обеспечивающее первое описание этого языка, что было чрезвычайно важно из-за отсутствия официального стандарта. В 1989 году состоялся выход Си++ версии 2.0. Его новые возможности включали множественное наследование, абстрактные классы, статические функции-члены, функции-константы и защищённые члены.
В 1990 году вышло «Комментированное справочное руководство по C++», положенное впоследствии в основу стандарта. Последние обновления включали шаблоны, исключения, пространства имён, новые способы приведения типов и булевский тип.
Стандартная библиотека Си++ также развивалась вместе с ним. Первым добавлением к стандартной библиотеке Си++ стали потоки ввода/вывода, обеспечивающие средства для замены традиционных функций Си printf и scanf. Позднее самым значительным развитием стандартной библиотеки стало включение в неё Стандартной библиотеки шаблонов.
После многих лет работы совместный комитет ANSI-ISO стандартизировал Си++ в 1998 году (ISO/IEC 14882:1998 — Язык программирования Си++). В течение нескольких лет после официального выхода стандарта комитет обрабатывал сообщения об ошибках и в итоге выпустил исправленную версию стандарта Си++ в 2003 году. В настоящее время рабочая группа МОС (ISO) работает над новой версией стандарта под кодовым названием C++09 (ранее известный как C++0X), который должен выйти в 2009 году.
Никто не обладает правами на язык Си++, он является свободным. Однако сам документ стандарта языка (за исключением черновиков) не доступен бесплатно.
Философия Си++
В книге «Дизайн и эволюция языка C++» Бьёрн Страуструп описывает принципы, которых он придерживался при проектировании Си++.[1] Эти принципы объясняют, почему Си++ именно такой, какой он есть. Некоторые из них:
1. Получить универсальный язык со статическими типами данных, эффективностью и переносимостью языка Си.
2. Непосредственно и всесторонне поддерживать множество стилей программирования, в том числе процедурное программирование, абстракцию данных, объектно-ориентированное программирование и обобщённое программирование.
3. Дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно.
4. Максимально сохранить совместимость с Си, тем самым делая возможным лёгкий переход от программирования на Си.
5.Избежать разночтений между Си и C++: любая конструкция, которая допустима в обоих этих языках, должна в каждом из них обозначать одно и то же и приводить к одному и тому же поведению программы.
6. Избегать особенностей, которые зависят от платформы или не являются универсальными.
7.Никакое языковое средство не должно приводить к снижению производительности программ, не использующих его.
8. Не требовать слишком усложнённой среды программирования.