2009-10-24 7 views
1

Si j'inclus simplement la classe Standard C++ existante dans le programme C++/CLI, cela fonctionnera-t-il? Dans mes tests, tout s'est bien passé, mais est-ce vrai pour tous les programmes?Toutes les fonctionnalités Standard C++ fonctionnent-elles en C++/CLI?

+1

Qu'est-ce que vous dire par C++ géré exactement? Les "extensions managées pour C++" manquant et obsolète, ou le C++/CLI actuellement supporté? Je suppose que ce dernier, mais je ne vais pas éditer votre question/tags jusqu'à ce que je suis sûr. – jalf

Répondre

3

C'est ce que promet Microsoft, oui. (Je l'ai regardé this video hier, dans lequel ils ont mentionné explicitement - en particulier parce que l'ajout de nullptr en C++ 0x se compromettre)

Alors oui, si vous prenez un programme C++ natif et compilez comme C++/CLI , avec aucun changement de code, alors oui, il va encore fonctionner.

Et bien sûr, si vous changez votre code (gcnew au lieu de nouvelles et d'autres « gérés » changements, bien sûr, tous les paris sont ouverts, et vous pourriez ou ne pas casser le code)

5

Si vous changez réellement la classe pour qu'elle soit une classe gérée (gc), alors non, elle va parfois se casser. En particulier, la sémantique de l'opérateur de suppression est modifiée, car les objets sont maintenant gérés par le garbage collector; la suppression d'un objet peut ne libérer aucune mémoire.

+0

Cependant, une destruction déterministe se produit avec les objets de la pile, vous pouvez donc toujours utiliser RAII. –

Questions connexes