Digamos que tengo una estructura definida como:¿Qué significa instanciar un objeto usando llaves en C++?
typedef
struct number{
int areaCode;
int prefix;
int suffix;
} PhoneNumber;
Cuando creo una instancia de esta estructura, si uso la siguiente sintaxis:
PhoneNumber homePhone = {858, 555, 1234};
... qué constructor se le llama? ¿El constructor predeterminado, o el constructor de copia, o ninguno en absoluto porque no está llamando 'nuevo'?
El verdadero propósito de esta pregunta es descubrir cómo puedo agregar un cuarto campo. Por eso quiero volver a definir mi estructura como:
typedef
struct number{
int areaCode;
int prefix;
int suffix;
int extension; // NEW FIELD INTRODUCED
} PhoneNumber;
Así que ahora, puedo crear nuevos objetos PhoneNumber con cuatro campos:
PhoneNumber officePhone = {858, 555, 6789, 777}
Sin embargo, tengo cientos de estos casos PhoneNumber ya creados con solo 3 campos (xxx, xxx, xxxx). Así que no quiero revisar y modificar TODAS las instancias únicas de mi objeto PhoneNumber que ya está definido. Quiero poder dejarlos solos, pero aún así poder crear nuevas instancias de números telefónicos con CUATRO campos. Así que estoy tratando de descubrir cómo puedo sobreescribir el constructor para que no se rompan mis instancias de tres parámetros existentes, pero también soportará mis nuevas instancias de cuatro parámetros.
Cuando intento definir un constructor predeterminado que toma 3 campos y establece el cuarto en un valor predeterminado '0', obtengo errores (en la parte de instanciación del código, no en la definición del constructor) quejándose de que mi objeto debe ser inicializado por el constructor, no por {...}. ¿Entonces parece que si invalido el constructor predeterminado, ya no puedo usar llaves para crear mis nuevos objetos?
Lo sentimos si esto se aleja por completo de las preguntas originales.
Relacionado: [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) –