Студопедия — R.18.1 Расширения
Студопедия Главная Случайная страница Обратная связь

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

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; просмотров: 300. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

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

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

Общая и профессиональная культура педагога: сущность, специфика, взаимосвязь Педагогическая культура- часть общечеловеческих культуры, в которой запечатлил духовные и материальные ценности образования и воспитания, осуществляя образовательно-воспитательный процесс...

Устройство рабочих органов мясорубки Независимо от марки мясорубки и её технических характеристик, все они имеют принципиально одинаковые устройства...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Внешняя политика России 1894- 1917 гг. Внешнюю политику Николая II и первый период его царствования определяли, по меньшей мере три важных фактора...

Оценка качества Анализ документации. Имеющийся рецепт, паспорт письменного контроля и номер лекарственной формы соответствуют друг другу. Ингредиенты совместимы, расчеты сделаны верно, паспорт письменного контроля выписан верно. Правильность упаковки и оформления....

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