Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

R.18.1 Расширения





В этом разделе перечисляются основные расширения языка С, введенныев С++.

R.18.1.1 Возможности С++, введенные в 1985 г.

Здесь перечисляются возможности, добавленные к С, версией языкаС++ 1985 г. Можно указывать типы формальных параметров функции ($$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 Возможности, добавленные в С++ после 1985 г.

Здесь перечисляются основные расширения С++ после 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 С++ и ANSI C

Вообще язык С++ обладает большими возможностями и налагает меньшеограничений, чем ANSI C, поэтому большинство конструкций ANSI Cявляются законными для С++, причем смысл их не меняется. Исключениясводится к следующему: Любая программа на ANSI C, использующая в качестве идентификаторовследующие служебные слова С++, не является программой на С++; $$R.2.4: asm catch class delete friend inline new operator private protected public template try this virtual throw Хотя это считается устаревшем в ANSI C, реализация С может налагать драконовские ограничения на длину идентификаторов; в реализациях С++ это недопустимо; $$R.2.3. В С++ функция должна быть описана прежде, чем ее можно вызвать; $$R.5.2.2. Описание f(); в С++ означает, что функция f не имеет параметров ($$R.8.2.5), а в С это означает, что f может иметь любое число параметров любого типа. Такое описание считается устаревшим в ANSI C. В ANSI C можно несколько раз описать без спецификации extern глобальный объект данных, в С++ возможно только одно его определение; $$R.3.3 В С++ класс не может иметь тоже имя, что и имя typedef, относящееся в той же области видимости к другому типу; $$R.9.1. В ANSI C операнд типа void* можно использовать в правой части присваивания, а также при инициализации переменной типа указателя на произвольный тип; в С++ это невозможно $$R.7.1.6. В ANSI C возможны команды переходов, обходящие инициализацию; в С++ это невозможно. В ANSI C по умолчанию глобальный объект типа const подлежит внешнему связыванию; для С++ это не так; $$R.3.3. Определения функций в "старом" стиле и вызовы неописанных функций считаются в С++ анахронизмами, которые не обязательно должны поддерживаться любой реализацией; $$R.18.3.1. В ANSI C они просто считаются устаревшими. В С++ структура (struct) образует область видимости ($$R.3.2); В ANSI C структура, перечисление или элемент перечисления, описанные в структуре поднимаются в область видимости самой структуры. Присваивание объекту типа перечисления значения, не принадлежащего перечислению, считается в С++ анахронизмом и не должно поддерживаться во всех реализациях; $$R.7.2. В ANSI C рекомендуется для таких присваиваний выдавать предупреждение. Строки, инициализирующие символьные массивы, не могут быть длиннее этих массивов; $$R.8.4.2. Тип символьной константы в С++ есть char ($$R.2.5.2) и int в ANSI C. Тип элемента перечисления есть тип этого перечисления в С++ ($$R.7.2) и тип int в ANSI C. Кроме того, стандарт ANSI для С допускает значительные различия вдопустимых реализациях языка, что может привести к еще большим расхожденияммежду реализациями С++ и С. В частности, в некоторых реализациях Смогут быть допустимы некоторые несовместимые описания. В С++ требуетсясовместимость даже для разных единиц трансляции; $$R.3.3.






Дата добавления: 2015-09-04; просмотров: 326. Нарушение авторских прав; Мы поможем в написании вашей работы!




Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...


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


Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

ЛЕКАРСТВЕННЫЕ ФОРМЫ ДЛЯ ИНЪЕКЦИЙ К лекарственным формам для инъекций относятся водные, спиртовые и масляные растворы, суспензии, эмульсии, ново­галеновые препараты, жидкие органопрепараты и жидкие экс­тракты, а также порошки и таблетки для имплантации...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

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

Studopedia.info - Студопедия - 2014-2025 год . (0.012 сек.) русская версия | украинская версия