Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Informations sur l'informatique et internet.
30 janvier 2021

Langage C++


L’acquisition de ressources est l’initialisation est la façon dont le mécanisme d’allocation et de récupération de C++ a été inventé; ce n’est pas l’explication la plus claire.

Cela signifie au moins deux choses. D’abord cela signifie que les objets sont toujours possédés par une entité responsable (une variable , une classe, une struct, une portée, voire un ensemble de parenthèses ) qui est responsable de la création et de la destruction de la ressource (habituellement un objet), et quand elle est elle-même détruite, elle doit aussi détruire ou renoncer à la propriété des objets. Cela s’applique également à des choses comme les descripteurs de fichiers ouverts, les verrous de mémoire, les mutexes, les threads, les connexions en streaming.

Alors que C le fait avec les éléments statiquement alloués, les éléments dynamiquement alloués et les fichiers ouverts et la mémoire accessible via des pointeurs tous doivent être récupérés manuellement.

C++ a une syntaxe pour « déplacer » les éléments devant être possédés par un autre objet ou portée, et utilise l’optimisation de la valeur de retour pour déterminer si les fonctions doivent copier leurs valeurs de retour ou simplement transférer la propriété jusqu’au contexte appelant. Ce n’est pas banal, et il faut de l’étude et de l’expérience pour tout comprendre.

Une grande partie de RAII fonctionne; les classes et structures composites le font automatiquement avec leurs membres de données, les fonctions le font automatiquement avec les leurs. C’est seulement là que les pointeurs et les nouveaux entrent dans l’image que vous devez vous soucier d’appeler delete, ou delete pour les tableaux.

Deuxièmement, cela signifie que l’initialisation des objets a lieu en C++ à l’instanciation de l’instance objet.
Cela peut impliquer l’allocation et l’initialisation des objets membres, l’appel des fonctions d’initialisation du constructeur, etc, tout code de démarrage nécessaire.
Des valeurs saines de 0 pour les nombres et de «  » pour les chaînes de caractères, etc. sont automatiquement assignées aux variables statiques lors de leur création, afin qu’elles soient immédiatement prêtes à être utilisées.
Les tableaux pointeurs et de style C ne sont pas initialisés à 0, cependant, donc gardez cela à l’esprit.

les objets dynamiques créés avec new sont initialisés en appelant leur constructeur avant qu’un pointeur ne soit retourné.

C++ Les objets sans barres de pointeur ni allocation de mémoire dyncamique ne fuient pas la mémoire. Ils retournent toutes les acquisitions au moment de la destruction et détruisent tous les objets qu’ils « possèdent » à l’époque.

Les objets STL, tels que std::vector ( a dynamic array ) appellent des destructeurs sur leur contenu lorsque leur destructeur est appelé à la fin de leur durée de vie.
C’est un comportement plutôt cool et orienté objet.

Publicité
Publicité
Commentaires
Informations sur l'informatique et internet.
  • Ce blog proposera les opportunités que peut offrir internet,que se soit pour le commerce,les associations,les clubs.C'est donc un thème très vaste et avec des textes très différents des uns des autres,pour couvrir l'énorme potentiel du net.
  • Accueil du blog
  • Créer un blog avec CanalBlog
Publicité
Archives
Publicité