N' [nouveau] appeler le constructeur par défaut en C++?
Lorsque j'utilise [nouveau] pour créer un tableau de mes classes:
int count = 10;
A *arr = new A[count];
Je vois qu'il appelle un constructeur par défaut de A
count
fois. Comme un résultat arr
a count
initialisé objets de type A
.
Mais si j'utilise la même chose pour construire un tableau int:
int *arr2 = new int[count];
il n'est pas initialisé. Toutes les valeurs sont quelque chose comme -842150451
si le constructeur par défaut de l'int assignes sa valeur à 0
.
Pourquoi est-il si différent de comportement? Un constructeur par défaut appelé non seulement pour les types intégrés?
Vous devez vous connecter pour publier un commentaire.
Voir la accepté de répondre à à une question très semblable. Lorsque vous utilisez
new[]
chaque élément est initialisé par le constructeur par défaut, sauf lorsque le type est un type. Types intégrés sont laissés non initialisé par défaut.Avoir construit-dans le type par défaut d'un tableau initialisé à utiliser
Types intégrés de ne pas avoir un constructeur par défaut, même si elles peuvent, dans certains cas, recevoir une valeur par défaut.
Mais dans votre cas,
new
juste alloue suffisamment d'espace dans la mémoire pour stocker descount
int
objets, c'est à dire. il allouesizeof<int>*count
.int i ();
ne pas initialiser une grandeur nomméei
. Il déclare une fonctioni
en retournant un int. Vous avez peut-être voulu direint i = int();
int x{};
🙂int *i = new int();
. @Cerdic, Désolé pour l'Affichage de BS.int
n'est pas une classe, il est construit dans le type de données, donc pas de constructeur est appelé pour cela.