Lassen Sie uns sagen, dass ich eine Struktur haben wie folgt definiert:Was bedeutet es, ein Objekt mit geschweiften Klammern in C++ zu instanziieren?
typedef
struct number{
int areaCode;
int prefix;
int suffix;
} PhoneNumber;
Wenn ich eine Instanz dieser Struktur erstellen, wenn ich die folgende Syntax verwenden:
PhoneNumber homePhone = {858, 555, 1234};
... welche Konstruktor ruft es? Der Standardkonstruktor oder der Kopierkonstruktor oder gar keiner, weil er nicht 'neu' aufruft?
Der eigentliche Zweck dieser Frage ist herauszufinden, wie ich ein viertes Feld hinzufügen kann. Deshalb möchte ich meine Struktur neu definieren als:
typedef
struct number{
int areaCode;
int prefix;
int suffix;
int extension; // NEW FIELD INTRODUCED
} PhoneNumber;
So, jetzt habe ich neue Phone Objekte mit vier Feldern erstellen:
PhoneNumber officePhone = {858, 555, 6789, 777}
Allerdings habe ich Hunderte dieser Phone Instanzen bereits erstellt mit nur 3 Felder (xxx, xxx, xxxx). Daher möchte ich JEDE einzelne Instanziierung meines bereits definierten PhoneNumber-Objekts nicht ausführen und ändern. Ich möchte in der Lage sein, diese in Ruhe zu lassen, aber immer noch in der Lage sein, neue Telefonnummern-Instanzen mit VIER-Feldern zu erstellen. Also versuche ich herauszufinden, wie ich den Konstruktor überschreiben kann, so dass meine bestehenden Drei-Parameter-Instanziierungen nicht brechen, aber es wird auch meine neuen Vier-Parameter-Instanziierungen unterstützen.
Wenn ich versuche, einen überschreibenden Standardkonstruktor zu definieren, der 3 Felder nimmt und den vierten auf einen Standardwert '0' setzt, bekomme ich Fehler (im Instanziierungsteil des Codes, nicht die Konstruktordefinition), die mein Objekt beschwert muss von Konstruktor initialisiert werden, nicht von {...}. Wenn ich also den Standardkonstruktor überschreibe, kann ich keine geschweiften Klammern mehr verwenden, um meine neuen Objekte zu erstellen?
Entschuldigung, wenn das weg von den ursprünglichen Fragen völlig weggeht.
Verwandte: [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) –