Compartilhar via


Extensões de componente para plataformas de tempo de execução

Visual C++ fornece extensões de idioma para ajudá-lo a programação em plataformas de tempo de execução. Usando Extensões de componentes Visual C++ (C++/CX), você pode programar aplicativos e componentes de Windows Store que criam em código nativo. Embora você possa criar aplicativos de Windows Store programando diretamente nas interfaces de Tempo de Execução do Windows COM, usando C++/CX, você pode trabalhar com construtores, exceções, e outros modernos linguagem de programação C++. Para habilitar a programação do C++ em um ambiente gerenciado de execução na plataforma do .NET, você pode usar C++/CLI.

Dois tempos de execução, um conjunto de extensões

C++/CX é um subconjunto de C++/CLI. Para as extensões que são comuns a C++/CX e a C++/CLI, a semântica depende de você estar destino Common Language Runtime (CLR) ou Tempo de Execução do Windows. Para criar seu aplicativo para executar em Tempo de Execução do Windows, especifique a opção do compilador de /ZW . Para compile-a para executar em CLR, especifique a opção do compilador de /clr . Essas opções são definidos automaticamente quando você usa o Visual Studio para criar um projeto do.

Para obter mais informações sobre como criar aplicativos de Windows Store em C++, consulte Roadmap for Windows Store apps using C++.

C++/CLI estende o padrão de ISO/ANSI C++, e é definido no padrão de Ecma C++/CLI . Para obter mais informações, consulte Programação do .NET no Visual C++.

Palavras-chave de tipo de dados

As extensões de idioma incluem as palavras-chavede agregação, que são palavras-chave que consiste em dois tokens separados por espaço em branco. Os tokens podem ter um que significa quando são usados separadamente, e outro significado quando são usados juntos. Por exemplo, a palavra “referência” é um identificador comum, e as palavras “classe” é uma palavra-chave que declare uma classe nativo. Mas quando essas palavras são combinadas para formar ref class, a palavra-chave agregado resultante declara uma entidade que é conhecida como uma classe de tempo de execução.

As extensões também incluem palavras-chave sensíveis ao contexto. Uma palavra-chave é tratado como contextuais dependendo do tipo de instrução que contém o, e de seu posicionamento na instrução. Por exemplo, a propriedade “a” pode ser um identificador, ou pode declarar um tipo especial de membro público da classe.

A tabela a seguir lista palavras-chave na extensão da linguagem C++.

Palavra-Chave

Contextuais

Finalidade

Referência

ref class

ref struct

Não

Declara uma classe.

Classes e Estruturas (Extensões de Componentes C++)

value class

value struct

Não

Declara uma classe do valor.

Classes e Estruturas (Extensões de Componentes C++)

interface class

interface struct

Não

Declara uma interface.

classe de interface (Extensões de Componentes C++)

enum class

enum struct

Não

Declara uma enumeração.

classe enum (Extensões de Componentes C++)

property

Sim

Declara uma propriedade.

propriedade (Extensões de Componentes C++)

delegate

Sim

Declara um representante.

delegado (Extensões de Componentes C++)

event

Sim

Declara um evento.

evento (Extensões de Componentes C++)

Especificadores de substituição

Você pode usar as seguintes palavras-chave para qualificar o comportamento substituto da derivação. Embora a palavra-chave de new não é uma extensão C++, é listado aqui porque pode ser usado em um contexto adicional. Alguns especificadores também são válidos para a programação nativo. Para obter mais informações, consulte Como: declarar especificadores de substituição em compilações nativos.

Palavra-Chave

Contextuais

Finalidade

Referência

abstract

Sim

Indica que as funções ou as classes são abstratos.

abstrata (Extensões de Componentes C++)

new

Não

Indica que uma função não é uma substituição de uma versão da classe base.

novo (novo slot em vtable) (Extensões de Componentes C++)

override

Sim

Indica que um método deve ser uma substituição de uma versão da classe base.

substituir (Extensões de Componentes C++)

sealed

Sim

Impede que as classes sejam usadas como classes base.

autenticada (Extensões de Componentes C++)

Palavra-chave para produtos genéricas

As palavras-chave a seguir foram adicionados para dar suporte a tipos genéricos. Para obter mais informações, consulte Genéricos (Extensões de Componentes C++).

Palavra-Chave

Contextuais

Finalidade

generic

Não

Declara um tipo genérico.

where

Sim

Especifica as restrições aplicadas a um parâmetro de tipo genérico.

Palavra-chave diversos

As palavras-chave a seguir foram adicionados às extensões C++.

Palavra-Chave

Contextuais

Finalidade

Referência

finally

Sim

Indica o comportamento padrão de manipulações de exceção.

Tratamento de Exceção (Extensões de Componentes C++)

for each, in

Não

Enumera os elementos de uma coleção.

para cada um, no

gcnew

Não

Atribui tipos no heap com coletados. Use em vez de new e de delete.

ref new, gcnew (Extensões de Componentes C++)

ref new

Sim

Atribui um tipo de Tempo de Execução do Windows . Use em vez de new e de delete.

ref new, gcnew (Extensões de Componentes C++)

initonly

Sim

Indica que um membro só pode ser iniciado na declaração ou em um construtor estático.

InitOnly

literal

Sim

Cria um literal variável.

literal (Extensões de Componentes C++)

nullptr

Não

Indica que um identificador ou um ponteiro não têm em um objeto.

nullptr (Extensões de Componentes C++)

Construções de modelo

As seguintes construções de idioma são implementadas como modelos, em vez de como palavra-chave. Se você especificar a opção de compilador de /ZW , são definidos no namespace de lang . Se você especificar a opção de compilador de /clr , são definidos no namespace de cli .

Palavra-Chave

Finalidade

Referência

array

Declara uma matriz.

Matrizes (Extensões de Componentes C++)

interior_ptr

(CLR) somente os pontos de dados em uma referência tipo.

interior_ptr (C++/CLI)

pin_ptr

(CLR) somente aponta para os tipos de referência de CLR para suprimir temporariamente o sistema de coleta de lixo.

pin_ptr (C++/CLI)

safe_cast

Determina e executar o método ótimo de conversão de um tipo de tempo de execução.

safe_cast (Extensões de Componentes C++)

typeid

(CLR) só recupera um objeto de Type que descreve o tipo ou o objeto determinado.

typeid (Extensões de Componentes C++)

Declaradores

Os seguintes declarators do tipo instruem o tempo de execução para gerenciar automaticamente o tempo de vida e exclusão de objetos atribuídos.

Operador

Finalidade

Referência

^

Declara um identificador para um objeto; isto é, um ponteiro para Tempo de Execução do Windows ou a um objeto CLR que foi excluído automaticamente quando não é mais útil.

Operador Handle to Object (^) (Extensões de Componentes C++)

%

Declara uma referência de rastreamento; ou seja, uma referência a Tempo de Execução do Windows ou a um objeto CLR que foi excluído automaticamente quando não é mais útil.

Operador de Referência de Acompanhamento (Extensões de Componentes C++)

Construções adicionais e tópicos relacionados

Esta seção lista construções adicionais de programação, e tópicos pertinentes CLR.

Tópico

Descrição

__identifier (C++/CLI)

Tempo de Execução do Windows (e CLR) permite o uso de palavras-chave como identificadores.

Listas de Argumentos Variáveis (...) (C++/CLI)

Tempo de Execução do Windows (e CLR) habilita uma função para retornar um número variável de argumentos.

Equivalentes do .NET Framework aos tipos nativos do C++ (C++/CLI)

Lista os tipos de CLR que são usados no lugar dos tipos integrais C++.

modificador deappdomain__declspec

o modificador de__declspec autorizar que esse estáticos e variáveis globais existir por appdomain.

Conversões de Estilo C-Style com /clr (C++/CLI)

Descreve como as conversões do C - estilo são interpretadas.

__clrcall que chama a convenção

Indica a convenção de correspondência de chamada.

__cplusplus_cli

Macros predefinidas

Atributos personalizados (C++)

Descreve como definir seus próprios atributos de CLR.

Tratamento de Exceção (Extensões de Componentes C++)

Fornece uma visão geral de manipulação de exceção.

Substituições Explícitas (Extensões de Componentes C++)

Demonstra como as funções de membro podem substituir membros arbitrários.

Friend Assemblies (C++)

Discute como um cliente que o assembly pode acessar qualquer tipo em um componente do assembly.

Conversão boxing (Extensões de Componentes C++)

Demonstra as condições em que os tipos de valores são boxed.

Suporte para Compilador de Traços de Tipo (Extensões de Componentes C++)

Discute como detectar em tempo de compilação características dos tipos.

pragmas degerenciado, não gerenciado

Demonstra como as funções gerenciados e não gerenciados podem coexistir no mesmo módulo.

modificador deprocess__declspec

o modificador de__declspec autorizar que esse estáticos e variáveis globais existe pelo processo.

Reflexão (C++/CLI)

Demonstra a versão do CLR de informações de tipo de tempo de execução.

Cadeia de caracteres (Extensões de Componentes C++)

Discute a conversão do compilador de literais de cadeia de caracteres a String.

Encaminhamento de tipos (C++/CLI)

Habilita a movimentação de um tipo em um assembly de enviar para outro assembly de modo que o código de cliente não tem que ser recompilado.

Atributos Definidos pelo Usuário (Extensões de Componentes C++)

Demonstra atributos definidos pelo usuário.

Diretiva #using (C++)

Importa os assemblies externos.

Documentação XML (Visual C++)

Explica com base na documentação do código usando /doc (Processar comentários de documentação) (C/C++)

Consulte também

Outros recursos

Programação do .NET no Visual C++

Nativo e interoperabilidade .NET