"Мюррэй Хилл, Бьярн Страустрап. Язык С++" - читать интересную книгу автора

была проведена проверка определения C++, чтобы удостовериться в
том, что любая конструкциия, допустимая и в C и в C++,
действительно означает в обоих языках одно и то же.
Язык C сам эволюционировал за последние несколько лет, частично
под влиянием развития C++ (см. Ростлер [11]). Предварительный
грубый ANSI стандарт C [10] содержит синтаксис описаний функций,
заимствованный из "C с Классами". Заимствование идей идет в обе
стороны; например, указатель void* был придуман для ANSI C и

- стр 14 -

впервые реализован в C++. Когда ANSI стандарт разовьется несколько
дальше, придет время пересмотреть C++, чтобы удалить необоснованную
несовместимость. Будет, например, модернизирован препроцессор
(#с.11), и нужно будет, вероятно, отрегулировать правила
осуществления плавающей арифметики. Это не должно оказаться
болезненным, и C и ANSI C очень близки к тому, чтобы стать
подмножествами C++ (см. #с.11).

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

C++ был развит из языка программирования C и за очень немногими
исключениями сохраняет C как подмножество. Базовый язык, C
подмножество C++, спроектирован так, что имеется очень близкое
соответствие между его типами, операциями и операторами и
компьютерными объектами, с которыми непосредственно приходится
иметь дело: числами, символами и адресами. За исключением операций
свободной памяти new и delete, отдельные выражения и операторы C++
обычно не нуждаются в скрытой поддержке во время выполнения или
подпрограммах.
В C++ используются те же последовательности вызова и возврата из
функций, что и в C. В тех случаях, когда даже этот довольно
эффективный механизм является слишком дорогим, C++ функция может
быть подставлена inline, удовлетворяя, таким образом, соглашению о
записи функций без дополнительных расходов времени выполнения.
Одним из первоначальных предназначений C было применение его
вместо программирования на ассемблере в самых насущных задачах
системного программирования. Когда проектировался C++, были приняты
меры, чтобы не ставить под угрозу успехи в этой области. Различие
между C и C++ состоит в первую очередь в степени внимания,
уделяемого типам и структурам. C выразителен и снисходителен. C++
еще более выразителен, но чтобы достичь этой выразительности,
программист должен уделить больше внимания типам объектов. Когда
известны типы объектов, компилятор может правильно обрабатывать
выражения, тогда как в противном случае программисту пришлось бы
задавать действия с мучительными подробностями. Знание типов
объектов также позволяет компилятору обнаруживать ошибки, которые в
противном случае остались бы до тестирования. Заметьте, что
использование системы типов для того, чтобы получить проверку
параметров функций, защитить данные от случайного искажения, задать