Y at-il un moyen de détruire une structure (pas une classe)?Puis-je détruire une structure en C++?
Répondre
Dans C++ un struct
est exactement la même que celle d'un class
à l'exception de la visibilité par défaut sur les membres et les bases. Donc, s'il existe un moyen de "détruire" une classe, vous pouvez utiliser exactement la même méthode pour "détruire" une structure.
Donc, si vous avez un struct s { }
dans votre programme C++, vous pouvez le faire:
s *v = new s();
delete v; // will call structure's destructor.
Ou tout simplement laisser un objet tomber hors de portée appellera le destructeur. –
@Martin: oui. vrai. –
@Martin: mais ne pas laisser un pointeur d'objet tomber hors de portée. C'est important de faire la distinction. Dans cet exemple, c'est un pointeur. –
Sauf pour le prescripteur d'accès par défaut (« privée » pour la classe, pour struct « public »), tout le reste est même dans C++ class et struct. Donc, OUI, vous pouvez écrire et utiliser des destructeurs dans struct de la même manière qu'en classe.
Les structures sont identiques aux classes sauf que la visibilité par défaut et l'héritage sont publics (plutôt que privés).
Ainsi, vous pouvez créer et détruire struct comme celle-ci (même en tant que classe, ou un type construit):
// Create on the heap, need to manually delete.
MyStruct *const pStruct = new MyStruct();
delete pStruct;
// Created on the stack, automatically deleted for you.
MyStruct struct;
Structs et les classes sont la même chose, il y a juste une différence technique (champ d'accès par défaut) qui se produit en raison d'une différence conceptuelle entre les deux. Cependant chaque structure comme une classe appelle ses constructeurs quand les objets doivent être créés, et son destructeur quand son champ de visibilité se termine.
En C++, les structs ne sont pas moins puissants que les classes.
- 1. Initialiser une structure en C++
- 2. Comment faire pour convertir une structure C++ en structure C#
- 3. Vim autocomplete une structure en C
- 4. comment définir une structure comme en C
- 5. Structure Generics en C#
- 6. Structure statique en C++
- 7. détruire une fenêtre Toplevel tk en python
- 8. Structure problème en C
- 9. Initialiser et renvoyer une structure en une ligne en C++
- 10. Sérialiser une structure en C# vers C++ et vice versa
- 11. Structure problème d'initialisation en C
- 12. Alignement de structure en C++
- 13. C# .NET Convertir une image JPEG en une structure Bitmap
- 14. Comment afficher une liste liée dans une structure en C
- 15. comment passer une structure à une fonction en C++?
- 16. Affecter une liste de valeurs à une structure en C#?
- 17. pas en mesure de construire une structure complexe en C++
- 18. Comment passer (en valeur) une structure en Objective-C?
- 19. Marquage d'une structure en C à C#
- 20. C++ liste liée détruire la fonction
- 21. Héritage de structure en C
- 22. Déclaration de structure en C
- 23. Héritage de structure en C++
- 24. C# Application auto-détruire à une date spécifique
- 25. Vraiment détruire une session PHP?
- 26. Comment transformer une structure C# en une autre comme en C++?
- 27. Comment mettre un tableau dans une structure en C#?
- 28. Passe une structure avec de multiples entrées en C++
- 29. Comment faire une structure de structures en C++
- 30. Envoyer une structure C++ sur UDP en Java
Question effrayante, quelle est la plus grande image? Vous ne faites généralement pas du tout (c'est une variable automatique) ou vous appelez "delete" (il est dynamiquement alloué, mieux vaut ne pas le faire explicitement). Dans tous les autres cas, les structures sont des classes. – GManNickG