Читать «Справочное руководство по C++» онлайн - страница 100
Бьярн Страустрап
• Можно указывать типы формальных параметров функции (§R.8.2.5), и они будут проверяться (§R.5.2.2). Будет происходить преобразование типа (§R.5.2.2). Это есть и в ANSI C.
• В выражениях со значениями типа float вычисления могут проходить с обычной точностью (§R.3.6.1 и §R.4.3). Это есть и в ANSI C.
• Можно перегружать имена функций; §R.13.
• Можно перегружать операции; §R.13.4
• Возможна реализация вызова функций подстановкой; §R.7.1.2.
• Можно описывать объекты, представляющие данные, со спецификацией const; §R.7.1.6. Это есть и в ANSI C.
• Можно описывать типы ссылки; §R.8.2.2 и §R.8.4.3.
• Возможно управление свободной памятью с помощью операций new и delete; §R.5.3.3 и §R.5.3.4.
• Введены классы, которые позволяют: скрывать информацию (§R.11), проводить инициализацию (§R.12.1), осуществлять пользовательские преобразования типа (§R.12.3) и работать с динамическими типами с помощью виртуальных функций (§R.10.2).
• Имя класса или перечисления считается именем типа; §R.9.
• Указатель на любой объект c типом, не являющимся const или volatile, можно присвоить указателю типа void*. Это есть и в ANSI C.
• Указатель на функцию можно присваивать указателю типа void*; §R.4.6.
• Описание внутри блока считается оператором; §R.6.7.
• Можно описывать безымянные объединения; §R.9.5.
R.18.1.2 Возможности, добавленные в C++ после 1985 г.
Здесь перечисляются основные расширения C++ после 1985 г.:
• Класс может иметь более одного прямого базового класса (множественное наследование); §R.10.1.
• Члены класса могут быть защищенными; §R.11.
• Операции new и delete можно описывать в классе и перегружать; §R.5.3.3, §R.5.3.4, §R.12.5. Это позволило определенный способ управления памятью для класса с помощью "присваивания указателю this" отнести в раздел анахронизмов; §R.18.3.3.
• Можно явно уничтожать объекты; §R.12.4.
• Присваивания и инициализация для класса определены как присваивание и инициализация по членам; §R.12.8.
• Служебное слово overload стало излишним и отнесено к разделу анахронизмов; §R.18.3.
• Произвольные выражения разрешены в качестве инициализаторов статических объектов; §R.8.4.
• Объекты, представляющие данные, могут быть volatile; §R.7.1.6. Также и в ANSI C.
• Допустимы инициализаторы для статических членов класса; §R.9.4.
• Функции-члены могут быть статическими; §R.9.4.
• Функции-члены могут быть const или volatile; §R.9.3.1.
• Можно явно указать связывание с подпрограммами на других языках; §R.7.4.
• Можно перегружать операции -›, -›* и `; §R.13.4.
• Классы могут быть абстрактными; §R.10.3.
• Для пользовательских типов префиксные и постфиксные операции различаются.
• Шаблоны типов; §R.14.
• Управление особыми ситуациями; §R.15.
R.18.2 C++ и ANSI C