Disons que j'ai un struct défini comme:Qu'est-ce que cela signifie d'instancier un objet en utilisant des accolades en C++?
typedef
struct number{
int areaCode;
int prefix;
int suffix;
} PhoneNumber;
Lorsque je crée une instance de cette structure, si j'utilise la syntaxe suivante:
PhoneNumber homePhone = {858, 555, 1234};
... quel constructeur est-il appeler? Le constructeur par défaut, ou le constructeur de la copie, ou pas du tout parce qu'il n'appelle pas 'new'?
Le vrai but de cette question est de comprendre comment je peux ajouter un quatrième champ. Je tiens donc à redéfinir mon struct comme:
typedef
struct number{
int areaCode;
int prefix;
int suffix;
int extension; // NEW FIELD INTRODUCED
} PhoneNumber;
Alors maintenant, je peux créer de nouveaux objets PhoneNumber avec quatre champs:
PhoneNumber officePhone = {858, 555, 6789, 777}
Cependant, j'ai des centaines de ces instances PhoneNumber déjà créées avec seulement 3 champs (xxx, xxx, xxxx). Donc, je ne veux pas passer en revue et modifier chaque instanciation unique de mon objet PhoneNumber qui est déjà défini. Je veux être en mesure de laisser ces seuls, mais toujours être en mesure de créer de nouvelles instances de numéros de téléphone avec quatre champs. J'essaie donc de comprendre comment je peux écraser le constructeur pour que mes instanciations à trois paramètres ne se brisent pas, mais il supportera également mes nouvelles instanciations à quatre paramètres. Lorsque j'essaie de définir un constructeur par défaut qui prend trois champs et place le quatrième à la valeur par défaut '0', j'obtiens des erreurs (dans la partie d'instanciation du code, pas la définition du constructeur) se plaignant que mon objet doit être initialisé par le constructeur, pas par {...}. Il semble donc que si je remplace le constructeur par défaut, je ne peux plus utiliser d'accolades pour créer mes nouveaux objets?
Désolé si cela s'éloigne complètement des questions d'origine.
Connexe: [http://stackoverflow.com/questions/88957/what-does-0-mean-in/c/88960#88960](http://stackoverflow.com/questions/ 88957/what-does-0-mean-in-c/88960 # 88960) –