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

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

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Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Педагогическая структура процесса социализации Характеризуя социализацию как педагогический процессе, следует рассмотреть ее основные компоненты: цель, содержание, средства, функции субъекта и объекта...

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

Типовые ситуационные задачи. Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт Задача 1.У больного А., 20 лет, с детства отмечается повышенное АД, уровень которого в настоящее время составляет 180-200/110-120 мм рт. ст. Влияние психоэмоциональных факторов отсутствует. Колебаний АД практически нет. Головной боли нет. Нормализовать...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Классификация холодных блюд и закусок. Урок №2 Тема: Холодные блюда и закуски. Значение холодных блюд и закусок. Классификация холодных блюд и закусок. Кулинарная обработка продуктов...

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