Расширения компонентов для платформ среды выполнения
Visual C++ предоставляет расширения языка, помогающие запрограммировать для платформ среды выполнения.С помощью Расширения компонентов Visual C++ (C++/CX) можно запрограммировать приложений и компонентов Магазина Windows, компилируют в машинный код.Хотя можно создать путем программирования приложений Магазина Windows непосредственно к интерфейсам COM Среда выполнения Windows, с помощью C++/CX можно работать с конструкторами, исключения и другими самомоднейшими идиоматизмами программирования C++.Чтобы включить программирование C++ в управляемой среде выполнения в платформе .NET, можно использовать C++/CLI.
2 Времени выполнения, один набор расширений
C++/CX является подмножеством C++/CLI.Для расширений, которые являются общими для C++/CX и C++/CLI, зависит от семантики предназначен ли среда CLR или Среда выполнения Windows.Чтобы компилировать приложение для запуска на Среда выполнения Windows, укажите параметр компилятора /ZW.Чтобы компилировать его, чтобы выполнить для среды CLR, укажите параметр компилятора /clr.Эти параметры устанавливаются автоматически при использовании Visual Studio для создания проекта.
Дополнительные сведения о создании приложения Магазина Windows в C++ см. в разделе Roadmap for Windows Store apps using C++.
C++/CLI расширяет стандарт ISO/ANSI C++ и стандартом Ecma C++/CLI указано ниже.Дополнительные сведения см. в разделе Программирование в Visual C++ .NET.
Ключевые слова типа данных
Расширения языка включают статистические ключевые слова, которые ключевые слова, которые состоят из 2 маркеров, разделенных пробелами.Токены могут иметь одно значение, если они используются отдельные, а другой смысл, если они используются совместно.Например, слово "ref" обычный идентификатор и слово" ключевое слово "класс, объявляющий собственный класс.Но если эти слова объединяются для формирования ref class итоговый обработка ключевое слово объявляется сущность, например класса среды выполнения.
Расширения также входит контекстные ключевые слова.Ключевое слово считается контекстный в зависимости от типа выписки, в которой он содержится, и его размещения в этой выписке.Например, маркер "свойство" может быть идентификатором или он может объявить специальный тип открытого члена класса.
В следующей таблице перечислены ключевые слова в курсе расширения языка C++.
Ключевое слово |
Контекст учетом регистра |
Назначение |
Ссылки |
---|---|---|---|
ref class ref struct |
Нет |
Объявляет класс. |
|
value class value struct |
Нет |
Объявляет класс значения. |
|
interface class interface struct |
Нет |
Объявляет интерфейс. |
|
enum class enum struct |
Нет |
Объявляет перечисление. |
|
property |
Да |
Объявляет свойство. |
|
delegate |
Да |
Объявляет делегат. |
|
event |
Да |
Объявление события. |
Описатели переопределения
Можно использовать следующие ключевые слова для определения расширения функциональности переопределения для вывода.Хотя ключевое слово new не расширения C++, он перечислен здесь, поскольку его можно использовать в дополнительном контексте.Описатели также некоторые допустимые для собственного программирования.Дополнительные сведения см. в разделе Как Объявите описатели переопределения в собственных компиляциях.
Ключевое слово |
Контекст учетом регистра |
Назначение |
Ссылки |
---|---|---|---|
abstract |
Да |
Указывает, что функции или классы являются абстрактными. |
|
new |
Нет |
Указывает, что функция не является переопределения версии базового класса. |
|
override |
Да |
Указывает, что метод должен быть преодолением переопределения версии базового класса. |
|
sealed |
Да |
Предотвращает классы от в качестве базовых классов. |
Ключевые слова для универсальных шаблонов
Следующие ключевые слова больше добавлены в универсальные типы поддержки.Дополнительные сведения см. в разделе Универсальные типы и методы (расширения компонентов C++).
Ключевое слово |
Контекст учетом регистра |
Назначение |
---|---|---|
generic |
Нет |
Объявляет универсальный тип. |
where |
Да |
Определяет ограничения, применены к параметру универсального типа. |
Прочие ключевые слова
Следующие ключевые слова больше добавлены к расширениям C++.
Ключевое слово |
Контекст учетом регистра |
Назначение |
Ссылки |
---|---|---|---|
finally |
Да |
По умолчанию отображаются расширения функциональности обработок ошибок. |
|
for each, in |
Нет |
Перечисляет элементы коллекции. |
|
gcnew |
Нет |
Выбирает типы на мусор- собранной куче.Используйте вместо new и delete. |
|
ref new |
Да |
Выберите тип Среда выполнения Windows.Используйте вместо new и delete. |
|
initonly |
Да |
Указывает, что член можно инициализировать только при объявлении или в статическом конструкторе. |
|
literal |
Да |
Создает символьная переменная. |
|
nullptr |
Нет |
Указывает, что дескриптор или указатель не указывает на объект. |
Проектирования шаблона
Следующие конструкции языка реализованы в виде шаблонов, а не в виде ключевых слов.Если указан параметр компилятора /ZW, то они определены в пространстве имен lang.Если указан параметр компилятора /clr, то они определены в пространстве имен cli.
Ключевое слово |
Назначение |
Ссылки |
---|---|---|
array |
Объявляет массив. |
|
interior_ptr |
(Среда CLR) точки к данным в ссылочном типе. |
|
pin_ptr |
(Среда CLR) точки к ссылочным типам среды CLR, чтобы временно отключить системы сборки мусора. |
|
safe_cast |
Определяет и выполняет оптимальный метод литья для типа времени выполнения. |
|
typeid |
(Среда CLR) извлекает объект System.Type, описывающий заданный тип или объект. |
Деклараторы
Следующие деклараторы типа указывают среде выполнения на автоматическое управление временем существования и удаление выбранных объектов.
Оператор |
Назначение |
Ссылки |
---|---|---|
^ |
Объявляет дескриптор объекта; то есть указатель на объект Среда выполнения Windows или среды CLR, которая автоматически удалено, когда он больше нельзя будет использовать. |
Оператор дескриптора объекта (^) (расширения компонентов C++) |
% |
Объявляет ссылку отслеживания. то есть ссылку на Среда выполнения Windows или объект среды CLR, автоматически удалено, когда он больше нельзя будет использовать. |
Дополнительные конструирования и связанные разделы
В этом разделе перечислены дополнительные программные конструкции, и темы, которые относятся к среды CLR.
Раздел |
Описание |
---|---|
(Среда выполнения Windows и среда CLR) обеспечивает использование ключевых слов в качестве идентификаторов. |
|
(Среда выполнения Windows и среда CLR) позволяет функции принять переменное число аргументов. |
|
Эквиваленты собственным типам C++ в .NET Framework (C++/CLI) |
Перечисляет типы среды CLR, которые используются вместо целочисленных типов C++. |
Модификатор appdomain__declspec |
Модификатор __declspec этот mandates, что статическим и глобальная переменная существуйте в appdomain. |
Приведение в стиле C с использованием параметра /clr (C++/CLI) |
Описывает способы приведения в стиле языка C, интерпретируются. |
Соглашение о вызовах __clrcall |
Указывает среды CLR- совместимого соглашение о вызовах. |
__cplusplus_cli |
|
Описывает, как определить собственные атрибуты среды CLR. |
|
Предоставляет общие сведения об обработке ошибок. |
|
Демонстрирует, как функции-члены могут переопределять произвольные элементы. |
|
Описывает, как клиент сборка может получить доступ ко всем типа в компонент сборки. |
|
Описание условия, при которых типы значений, помещаются в упакован. |
|
Поддержка характеристик типов компилятором (расширения компонентов C++) |
Содержит сведения о том, как определить характеристики типов во время компиляции. |
Прагмы managed, unmanaged |
Демонстрирует, как управляемой и неуправляемой функции могут совместно существовать в одном модуле. |
Модификатор process__declspec |
Модификатор __declspec этот mandates, что статическим и глобальная переменная существуйте в процесс. |
Показывает версию среды CLR данных о типах во время выполнения. |
|
Обсуждается преобразование компилятора строковых литералов в String. |
|
Включает перемещения типа в сборке доставки на другую сборку, чтобы клиентский код не должен быть перекомпилирован. |
|
Демонстрирует определяемые пользователем атрибуты. |
|
Импортирования внешние сборки. |
|
Объясняет на основе XML документации кода с помощью /doc (обработка комментариев документации) (C/C++) |