Tutte le funzionalità C ++ standard funzionano in C ++ / CLI? [duplicare]
Domanda
Questa domanda ha già una risposta qui:
- La CLI C ++ è un superset di C ++? 6 risposte
Se includo solo la classe C ++ standard esistente nel programma C ++ / CLI, funzionerà?
Nei miei test tutto ha funzionato abbastanza bene, ma è vero per ogni programma?
Soluzione
Questo è ciò che Microsoft promette, sì. (Ho visto questo video ieri, in cui lo hanno menzionato esplicitamente, in particolare perché l'aggiunta di nullptr
in C ++ 0x lo comprometterebbe)
Quindi sì, se prendi un programma C ++ nativo e lo compili come C ++ / CLI, con le modifiche al codice no , allora sì, funzionerà comunque.
E, naturalmente, se modifichi il tuo codice (gcnew invece di nuove e altre modifiche "gestite", ovviamente, tutte le scommesse sono disattivate e potresti o meno rompere il codice)
Altri suggerimenti
Se cambi effettivamente la classe in una classe gestita (gc), allora no, a volte si romperà. In particolare, la semantica dell'operatore di eliminazione viene modificata, poiché gli oggetti sono ora gestiti dal Garbage Collector; l'eliminazione di un oggetto potrebbe non liberare memoria.