Estensioni componenti per le piattaforme runtime
Visual C++ include le estensioni del linguaggio per programmare le piattaforme runtime.Utilizzando Estensioni componenti Visual C++ (C++/CX), è possibile pianificare le applicazioni e componenti Windows Store compilate in codice nativo.Sebbene sia possibile creare applicazioni Windows Store programmazione diretta le interfacce COM Windows Runtime, utilizzando C++/CX, è possibile utilizzare i costruttori, le eccezioni e altri idiomi moderni di programmazione in C++.Per abilitare la programmazione in C++ in un ambiente di esecuzione gestito sulla piattaforma .NET, è possibile utilizzare C++/CLI.
Due runtime, un set di estensioni
C++/CX è un subset di C++/CLI.Per le estensioni comuni a C++/CX e a C++/CLI, la semantica varia a seconda che si intende utilizzare Common Language Runtime (CLR) o Windows Runtime.Per compilare l'applicazione per l'esecuzione su Windows Runtime, specificare l'opzione del compilatore /ZW.Per consentirne l'esecuzione in CLR, specificare l'opzione del compilatore /clr.Queste opzioni sono impostate automaticamente quando si utilizza Visual Studio per creare un progetto.
Per ulteriori informazioni su come creare applicazioni Windows Store in C++, vedere Roadmap for Windows Store apps using C++.
C++/CLI estende lo standard di ISO/ANSI C++ e viene definito con lo standard ECMA C++/CLI.Per ulteriori informazioni, vedere programmazione.NET di Visual C++.
Parole chiave del tipo di dati
Le estensioni del linguaggio sono incluse le parole chiave di aggregazione, che rappresentano parole chiave che sono di due token separati da spazi.I token possono avere uno che indicano quando vengono utilizzati separatamente e altro utile quando vengono utilizzati con.Ad esempio, la parola "riferimento" è un identificatore comune e la parola "classe" è una parola chiave che dichiara una classe nativa.Ma quando queste parole combinati per formare ref class, la parola chiave di aggregazione risultante dichiara entità detta classe di runtime.
Le estensioni sono inclusi anche le parole chiave sensibili al contesto.Una parola chiave viene considerata come sensibile al contesto a seconda del tipo di istruzione che la contiene e della posizione in tale istruzione.Ad esempio, "proprietà" token può essere un identificatore, oppure può dichiarare un tipo speciale di membro di classe pubblica.
Nella tabella seguente sono elencate le parole chiave nell'estensione del linguaggio C++.
Parola chiave |
Sensibile al contesto |
Scopo |
Riferimento |
---|---|---|---|
ref class ref struct |
No |
Dichiara la classe. |
|
value class value struct |
No |
Dichiarare una classe di valore. |
|
interface class interface struct |
No |
Dichiara un'interfaccia. |
|
enum class enum struct |
No |
Dichiara un'enumerazione. |
|
property |
Sì |
Dichiara una proprietà. |
|
delegate |
Sì |
Dichiarare un delegato. |
|
event |
Sì |
Dichiara un evento. |
Identificatori di override
È possibile utilizzare le seguenti parole chiave per specificare il comportamento di override per la derivazione.Sebbene la parola chiave new non essere un'estensione C++, è descritta in quanto può essere utilizzata in un contesto aggiuntivo.Alcuni identificatori sono validi anche per la programmazione nativa.Per ulteriori informazioni, vedere Procedura: Dichiarare gli identificatori di override nelle compilazioni native.
Parola chiave |
Sensibile al contesto |
Scopo |
Riferimento |
---|---|---|---|
abstract |
Sì |
Indica che le funzioni o le classi sono astratte. |
|
new |
No |
Indica che una funzione non è un override di una versione della classe base. |
nuovo (nuovo slot in vtable) (Estensioni del componente C++) |
override |
Sì |
Indica che un metodo deve essere un override di una versione della classe base. |
|
sealed |
Sì |
Impedisce che le classi siano utilizzati come classi base. |
Parole chiave per i generics
Le parole chiave seguenti sono state aggiunte per il supporto di tipi generici.Per ulteriori informazioni, vedere Generics (Estensioni del componente C++).
Parola chiave |
Sensibile al contesto |
Scopo |
---|---|---|
generic |
No |
Dichiara un tipo generico. |
where |
Sì |
Specifica i vincoli applicati a un parametro di tipo generico. |
Diverse parole chiave
Le parole chiave seguenti sono state aggiunte alle estensioni di C++.
Parola chiave |
Sensibile al contesto |
Scopo |
Riferimento |
---|---|---|---|
finally |
Sì |
Indica il comportamento predefinito delle gestioni eccezioni. |
|
for each, in |
No |
Enumera gli elementi di una raccolta. |
|
gcnew |
No |
Alloca tipi nell'heap sottoposto a garbage collection.Utilizzare anziché new e delete. |
|
ref new |
Sì |
Alloca un tipo Windows Runtime.Utilizzare anziché new e delete. |
|
initonly |
Sì |
Indica che un membro può essere inizializzato solo alla dichiarazione o in un costruttore statico. |
|
literal |
Sì |
Crea una variabile letterale. |
|
nullptr |
No |
Indica che un handle o un puntatore non puntano a un oggetto. |
Costrutti del modello
I seguenti costrutti di linguaggio sono implementati come modelli, anziché come parole chiave.Se si specifica l'opzione del compilatore /ZW, definiti nello spazio dei nomi lang.Se si specifica l'opzione del compilatore /clr, definiti nello spazio dei nomi cli.
Parola chiave |
Scopo |
Riferimento |
---|---|---|
array |
Dichiara una matrice. |
|
interior_ptr |
(CLR) solo punti ai dati in un tipo di riferimento. |
|
pin_ptr |
(CLR) punti solo ai tipi di riferimento CLR temporaneamente per eliminare il sistema di garbage collection. |
|
safe_cast |
Determina ed esegue il metodo ottimale di cast di un tipo di runtime. |
|
typeid |
(CLR) solo recupera un oggetto System.Type che descrive il tipo o l'oggetto specificato. |
Dichiaratori
I dichiaratori del tipo base al runtime per gestire automaticamente la durata e l'eliminazione di oggetti allocati.
Operatore |
Scopo |
Riferimento |
---|---|---|
^ |
Dichiara un handle a un oggetto; ovvero un puntatore a Windows Runtime o all'oggetto CLR che automaticamente eliminato quando non è più utilizzato. |
Operatore handle a oggetto (^) (Estensioni del componente C++) |
% |
Dichiara un riferimento di rilevamento, ovvero un riferimento a Windows Runtime o all'oggetto CLR che automaticamente eliminato quando non è più utilizzato. |
Operatore di riferimento di rilevamento (Estensioni del componente C++) |
Altri costrutti e argomenti correlati
In questa sezione sono elencati i costrutti di programmazione aggiuntivi e gli argomenti relativi al CLR.
Argomento |
Descrizione |
---|---|
(Windows Runtime e CLR) consente l'utilizzo delle parole chiave come identificatori. |
|
(Windows Runtime e CLR) modo una funzione può accettare un numero variabile di argomenti. |
|
Elenca i tipi CLR utilizzati anziché i tipi integrali C++. |
|
Modificatore diappdomain__declspec |
Il modificatore di__declspec che vi tale istanza e statici variabili globali esiste per dominio applicazione. |
Viene descritto come i cast di tipo C sono interpretati. |
|
Convenzione di chiamata di__clrcall |
Indica la convenzione di chiamata che supporta le librerie CLR conforme. |
__cplusplus_cli |
|
Viene descritto come definire propri attributi CLR. |
|
Viene fornita una panoramica di gestione delle eccezioni. |
|
Viene illustrato come le funzioni membro possono eseguire l'override dei membri arbitrari. |
|
Viene illustrato come un assembly client può accedere a tutti i tipi in una parte dell'assembly. |
|
Vengono illustrate le condizioni in cui i tipi di valori sono inscatolati. |
|
Supporto del compilatore per tratti di tipo (Estensioni del componente C++) |
Viene illustrato come rilevare le caratteristiche dei tipi in fase di compilazione. |
Pragma dimanaged, unmanaged |
Viene illustrato come gestito e funzioni non gestite possono coesistere nello stesso modulo. |
Modificatore diprocess__declspec |
Il modificatore di__declspec che vi tale istanza e statici variabili globali esiste per processo. |
Viene illustrata la versione CLR di informazioni. |
|
Viene descritta la conversione del compilatore dei valori letterali stringa a String. |
|
Consente lo spostamento di un tipo in un assembly di trasporto a un altro assembly in modo da non dover ricompilare il codice client. |
|
Attributi definiti dall'utente (Estensioni del componente C++) |
Vengono illustrati gli attributi definiti dall'utente. |
Sono inclusi gli assembly esterni. |
|
Viene illustrata la documentazione basata su XML di codice utilizzando /doc (Elabora i commenti per la documentazione) (C/C++) |