Estensioni componenti per le piattaforme runtime
Visual C++ fornisce estensioni del linguaggio che consentono la programmazione su piattaforme runtime. Utilizzando Estensioni componenti Visual C++ (C++/CX), è possibile programmare le applicazioni Windows Store e i componenti compilando in codice nativo. Sebbene sia possibile creare applicazioni Windows Store programmando direttamente sulle interfacce COM di Windows Runtime, utilizzando C++/CX, è possibile utilizzare i costruttori, le eccezioni e altri idiomi moderni della 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 insieme 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 il Common Language Runtime (CLR) o Windows Runtime. Per compilare l'applicazione da eseguire su Windows Runtime, specificare l'opzione del compilatore /ZW. Per consentire la compilazione e l'esecuzione sul CLR, specificare l'opzione del compilatore /clr. Queste opzioni vengono 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 C++ di ISO/ANSI e viene definito con lo standard ECMA di C++/CLI. Per ulteriori informazioni, vedere Programmazione .NET in Visual C++.
Parole chiave per il tipo di dati
Le estensioni del linguaggio includono parole chiave di aggregazione, che rappresentano parole chiave composte da due token separati da spazi. I token possono avere un significato quando vengono utilizzati separatamente ed un altro quando vengono utilizzati insieme. Ad esempio, la parola "ref" è un identificatore ordinario e la parola "class" è una parola chiave che dichiara una classe nativa. Ma quando queste parole sono combinate per formare ref class, la parola chiave di aggregazione risultante dichiara un'entità che è nota come classe di runtime.
Le estensioni includono 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 sua posizione in questa istruzione. Ad esempio, il token "property" può essere un identificatore, oppure può dichiarare un tipo speciale di un membro di una 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 una classe. |
|
value class value struct |
No |
Dichiara 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ì |
Dichiara un delegato. |
|
event |
Sì |
Dichiara un evento. |
Identificatori di override
È possibile utilizzare le seguenti parole chiave per precisare il comportamento di override per la derivazione. Sebbene la parola chiave new non è un'estensione di C++, è qui 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 di 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 di base. |
|
sealed |
Sì |
Impedisce che le classi siano utilizzati come classi di base. |
Parole chiave per i Generics
Le seguenti parole chiave sono state aggiunte per supportare i 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 che sono applicati ad un parametro di tipo generico. |
Varie parole chiave
Le seguenti parole chiave sono state aggiunte alle estensioni di C++.
Parola chiave |
Sensibile al Contesto |
Scopo |
Riferimento |
---|---|---|---|
finally |
Sì |
Indica il comportamento predefinito per la gestione delle eccezioni. |
|
for each, in |
No |
Elenca gli elementi di una collezione. |
|
gcnew |
No |
Alloca tipi nell'heap sottoposto a garbage collection. Utilizzare in alternativa new e delete. |
|
ref new |
Sì |
Alloca un tipo di Windows Runtime. Utilizzare in alternativa 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 punto di controllo o un puntatore non puntano ad 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, vengono definiti nello spazio dei nomi lang. Se si specifica l'opzione del compilatore /clr, vengono definiti nello spazio dei nomi cli.
Parola chiave |
Scopo |
Riferimento |
---|---|---|
array |
Dichiara una matrice. |
|
interior_ptr |
(Solo CLR) Punta ai dati in un tipo per riferimento. |
|
pin_ptr |
(Solo CLR) Punta ai tipi per riferimento del CLR per eliminare temporaneamente il sistema di garbage collection. |
|
safe_cast |
Determina ed esegue il metodo ottimale di cast di un tipo runtime. |
|
typeid |
(Solo CLR) Recupera un oggetto Type che descrive il tipo o l'oggetto specificato. |
Dichiaratori
I seguenti dichiaratori di tipo incaricano al runtime di gestire automaticamente la durata e l'eliminazione di oggetti allocati.
Operatore |
Scopo |
Riferimento |
---|---|---|
^ |
Dichiara un punto di controllo ad un oggetto; ovvero un puntatore a Windows Runtime o ad un oggetto CLR che viene 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 ad un oggetto CLR che viene automaticamente eliminato quando non è più utilizzato. |
Operatore di riferimento di rilevamento (Estensioni del componente C++) |
Costrutti Aggiuntivi e Argomenti Correlati
In questa sezione vengono 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) Consente a una funzione di accettare un numero variabile di argomenti. |
|
Elenca i tipi CLR che vengono utilizzati al posto dei tipi integrali di C++. |
|
Modificatore appdomain __declspec |
Il modificatore__declspec specifica che le variabili statiche e globali sono disponibili per dominio di applicazione. |
Descrive come sono interpretati i cast di tipo C. |
|
convenzione di chiamata __clrcall |
Indica la convenzione di chiamata conforme al CLR. |
__cplusplus_cli |
|
Viene descritto come definire i propri attributi CLR. |
|
Viene fornita una panoramica sulla 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 un componente dell'assembly. |
|
Vengono illustrate le condizioni in cui i tipi di valori vengono incapsulati. |
|
Supporto del compilatore per tratti di tipo (Estensioni del componente C++) |
Viene illustrato come rilevare le caratteristiche dei tipi in fase di compilazione. |
Pragma managed, unmanaged |
Viene illustrato come funzioni gestite e non gestite possono coesistere nello stesso modulo. |
Modificatore processo __declspec |
Il modificatore__declspec specifica che le variabili statiche e globali sono disponibili per processo. |
Viene illustrata la versione CLR del tipo di informazioni run-time. |
|
Viene descritta la conversione del compilatore dei letterali di stringa a String. |
|
Consente lo spostamento di un tipo in un assembly di trasporto ad 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. |
Importa gli assembly esterni. |
|
Viene illustrata la documentazione basata su codice XML utilizzando /doc (Elabora i commenti per la documentazione) (C/C++) |