Différences d'instanciation : nouveau et non nouveau
Cette question explore les différences fonctionnelles entre l'instanciation d'un objet à l'aide de l'opérateur new et son instanciation sans neuf.
Non neuf Instanciation
Time t(12, 0, 0); // t is a Time object
Cette instanciation crée un objet Time nommé t qui réside sur la pile (dans la plupart des implémentations). Il conserve son existence dans la portée actuelle.
nouvelle instanciation
Time *t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
Cette instanciation alloue de la mémoire dynamiquement à l'aide de l'opérateur new(), puis appelle le constructeur Time( ). L'adresse du bloc mémoire alloué est stockée dans t. L'objet Time réside sur le tas (généralement). Plus tard dans le programme, t doit être supprimé pour libérer la mémoire allouée et éviter les fuites de mémoire.
Différences fonctionnelles
Outre la différence évidente dans la gestion de la mémoire, il n'y a pas différences fonctionnelles substantielles entre les deux instanciations. Les deux méthodes créent des instances de la classe Time avec les paramètres spécifiés.
N.B.
Les termes « pile » et « tas » sont généralement utilisés pour indiquer les emplacements de stockage de objets alloués par pile et par tas, respectivement. Cependant, le standard C n’impose pas ces distinctions en fonction des emplacements mémoire. Au lieu de cela, il catégorise les objets en fonction de leur durée de stockage, qui peut ou non correspondre aux concepts conventionnels de pile et de tas.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!