"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment créer des objets et appeler des constructeurs sans utiliser « new » en C++ ?

Comment créer des objets et appeler des constructeurs sans utiliser « new » en C++ ?

Publié le 2024-11-06
Parcourir:648

How to Create Objects and Invoke Constructors Without Using `new` in C  ?

Constructeurs et Malloc

Contrairement aux expressions new et delete, std::malloc n'invoque pas le constructeur lors de l'allocation de mémoire pour un objet. Par conséquent, pour créer un objet tout en appelant également son constructeur, une approche alternative est nécessaire.

Solutions possibles :

1. Utilisation de new :
Il s'agit de l'utilisation principale prévue, car new crée explicitement un objet et invoque ensuite son constructeur.

Exemple :

A* a = new A();
delete a;

2. Invocation explicite du constructeur (Placement New) :
Cette méthode implique l'allocation de mémoire à l'aide de malloc, puis l'appel manuel du constructeur à l'aide de la nouvelle syntaxe de placement.

Exemple :

A* a = (A*)malloc(sizeof(A));
new (a) A();

a->~A();
free(a);

Il est important de noter que le placement new nécessite l'utilisation de la surcharge de constructeur correcte et doit être utilisé avec parcimonie. Généralement, new doit être utilisé pour la création d'objets, tandis que le placement new convient à des scénarios spécifiques dans lesquels la gestion de la mémoire est gérée manuellement.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3