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. |
|
value class value struct |
Não |
Declara uma classe do valor. |
|
interface class interface struct |
Não |
Declara uma interface. |
|
enum class enum struct |
Não |
Declara uma enumeração. |
|
property |
Sim |
Declara uma propriedade. |
|
delegate |
Sim |
Declara um representante. |
|
event |
Sim |
Declara um evento. |
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. |
|
new |
Não |
Indica que uma função não é uma substituição de uma versão da classe base. |
|
override |
Sim |
Indica que um método deve ser uma substituição de uma versão da classe base. |
|
sealed |
Sim |
Impede que as classes sejam usadas como classes base. |
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. |
|
for each, in |
Não |
Enumera os elementos de uma coleção. |
|
gcnew |
Não |
Atribui tipos no heap com coletados. Use em vez de new e de delete. |
|
ref new |
Sim |
Atribui um tipo de Tempo de Execução do Windows . Use em vez de new e de delete. |
|
initonly |
Sim |
Indica que um membro só pode ser iniciado na declaração ou em um construtor estático. |
|
literal |
Sim |
Cria um literal variável. |
|
nullptr |
Não |
Indica que um identificador ou um ponteiro não têm em um objeto. |
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. |
|
interior_ptr |
(CLR) somente os pontos de dados em uma referência tipo. |
|
pin_ptr |
(CLR) somente aponta para os tipos de referência de CLR para suprimir temporariamente o sistema de coleta de lixo. |
|
safe_cast |
Determina e executar o método ótimo de conversão de um tipo de tempo de execução. |
|
typeid |
(CLR) só recupera um objeto de Type que descreve o tipo ou o objeto determinado. |
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 |
---|---|
Tempo de Execução do Windows (e CLR) permite o uso de palavras-chave como identificadores. |
|
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. |
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 |
|
Descreve como definir seus próprios atributos de CLR. |
|
Fornece uma visão geral de manipulação de exceção. |
|
Demonstra como as funções de membro podem substituir membros arbitrários. |
|
Discute como um cliente que o assembly pode acessar qualquer tipo em um componente do assembly. |
|
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. |
Demonstra a versão do CLR de informações de tipo de tempo de execução. |
|
Discute a conversão do compilador de literais de cadeia de caracteres a String. |
|
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. |
Importa os assemblies externos. |
|
Explica com base na documentação do código usando /doc (Processar comentários de documentação) (C/C++) |