O padrão C++ permite que os fornecedores de compiladores forneçam extensões não padrão para a linguagem. A Microsoft fornece extensões para ajudar você a conectar o código C++ nativo ao código executado no .NET Framework ou na Plataforma Universal do Windows (UWP). As extensões .NET são chamadas de C++/CLI e geram um código que é executado no ambiente de execução gerenciado pelo .NET, chamado de Common Language Runtime (CLR). As extensões da UWP são chamadas de C++ /CX e geram um código de máquina nativo.
Nota
Para novos aplicativos, recomendamos o uso de C++/WinRT em vez de C++/CX. C++/WinRT é uma nova projeção de linguagem padrão C++17 para APIs do Windows Runtime. Continuaremos a dar suporte a C++/CX e WRL, mas recomendamos que os novos aplicativos usem o C++/WinRT. Para obter mais informações, confira C++/WinRT.
As extensões C++/CX são um subconjunto de C++/CLI. Embora a sintaxe da extensão seja idêntica na maioria dos casos, o código gerado depende de você especificar a opção de compilador /ZW para o UWP de destino ou a opção /clr para o .NET de destino. Essas opções são definidas automaticamente quando você usa o Visual Studio para criar um projeto.
Palavras-chave do tipo de dados
As extensões de linguagem incluem palavras-chave agregadas, que consistem em dois tokens separados por espaço em branco. Os tokens podem ter um significado quando são usados separadamente e outro significado quando são usados juntos. Por exemplo, a palavra "ref" é um identificador comum e a palavra "class" é uma palavra-chave que declara uma classe nativa. Mas quando essas palavras são combinadas para formar ref class, a palavra-chave agregada resultante declara uma entidade que é conhecida como classe de runtime.
As extensões também incluem palavras-chave contextuais. Uma palavra-chave é tratada como contextual dependendo do tipo de instrução que a contém e de seu posicionamento nessa instrução. Por exemplo, o token "propriedade" pode ser um identificador ou pode declarar um tipo especial de membro de classe pública.
A tabela a seguir lista palavras-chave na extensão de linguagem C++.
Você pode usar as seguintes palavras-chave para qualificar o comportamento de substituição para derivação. Embora a palavra-chave new não seja uma extensão de C++, ela é listada aqui porque pode ser usada em um contexto adicional. Alguns especificadores também são válidos para programação nativa. Para obter mais informações, confira Como declarar especificadores de substituição em compilações nativas (C++/CLI).
As seguintes construções de linguagem são implementadas como modelos, em vez de como palavras-chave. Se você especificar a opção de compilador /ZW, eles serão definidos no namespace lang. Se você especificar a opção de compilador /clr, eles serão definidos no namespace cli.
Os seguintes declaradores de tipo instruem o runtime a gerenciar automaticamente o tempo de vida e a exclusão de objetos alocados.
Operador
Finalidade
Referência
^
Declara um identificador para um objeto; ou seja, um ponteiro para um objeto do Windows Runtime ou do CLR que é automaticamente excluído quando não puder mais ser usado.
Declara uma referência de companhamento; ou seja, uma referência a um objeto do Windows Runtime ou do CLR que é automaticamente excluído quando não puder mais ser usado.
Saiba como implementar classes usando técnicas avançadas, como classes estáticas, classes parciais e inicializadores de objetos que podem melhorar a legibilidade, a manutenção e a organização do seu código.