Язык программирования C++ разработан сотрудником Bell Laboratories компании AT&T Бъерном Страуструпом (Bjarne Stroustrup). Непосредственным предшественником языка C++ является язык C with Classes, созданный тем же автором в 1980 г. Язык C with Classes в свою очередь был создан на основе языков C и Simula. C++ - это в значительной степени надстройка над C. В определенном смысле C++ можно назвать "улучшенным C", который обеспечивает контроль типов, перегрузку функций (переопределение) и ряд других свойств. Но главное состоит в том, что C++ ориентирован на объектное проектирование.
Известны две версии C++: 1.0 и 2.0. В версии 1.0 реализованы основные механизмы объектно-ориентированного программирования, такие, как простое наследование и полиморфизм, контроль типов и переопределение функций. В созданной в 1989 г. версии 2.0 нашли отражение многие дополнительные свойства (например, множественное наследование), полученные из опыта работы и обмена информацией с пользователями языка. В последующих версиях предполагается реализовать обобщенные модули (шаблоны) и обработку исключительных ситуаций.
Первые трансляторы C++ на основе препроцессора для языка C, названного cfront. Промежуточный код C мог быть использован в любых Unix системах. В настоящее время почти для всех типов ЭВМ созданы специальные компиляторы C++.
Страуструп утверждает, что "C++ создавался с целью избавить автора и его друзей от необходимости программировать на ассемблере, C или других языках высокого уровня. Основной задачей было создание языка, на котором удобно писать хорошие программы и приятно работать программисту. Язык C++ никогда не проектировался на бумаге. Одновременно выполнялось его проектирование, документирование и реализация". C++ устранил многие недостатки C, добавив механизмы описания классов, контроль типов, переопределение функций, управление свободной памятью, постоянные типы, макроопределения (подставляемые функции), производные классы и виртуальные функции. Ниже приводятся характеристики языка C++.
Абстракции | Переменные объектов Методы объектов Переменные классов Методы классов |
Да Да Да Да |
Ограничение доступа | Для переменных
Для методов |
Общедоступные, защищенные, обособленные Общедоступные, защищенные, обособленные |
Модульность | Виды модульности | Файл (Заголовок-тело) |
Иерархия | Наследование Обобщенные блоки Метаклассы |
Множественное Нет Нет |
Типирование | Строгое типирование Полиморфизм |
Да Да (простой) |
Параллельность | Многозадачность | Да (определяется в классе) |
Устойчивость | Устойчивость объектов | Нет |
Уведомление: University Update - Iraq - ???? ???????????????? C++