Wir verwenden häufig c ++ - Strukturen, um die Datenstruktur im Gegensatz zur Klasse zu definieren, die ein vollständiges Modul mit Member-Methoden sein kann. Tief im Inneren wissen wir, dass beide gleich sind (grob gesagt).
Die Tatsache, dass wir häufig Strukturen als reine Datenentitäten verwenden / behandeln, erzeugt diesen Drang, dass wir auch keine Standardkonstruktoren hinzufügen. Aber Konstruktoren sind immer großartig, sie vereinfachen die Dinge und helfen, Fehler zu beseitigen.
Wäre es verpönt, meinen Datenstrukturen Standardkonstruktoren hinzuzufügen?
Wird durch die Implementierung des Standardkonstruktors auch die Struktur Non-POD (normaler alter Datentyp) erstellt, sofern andere Kriterien erfüllt sind?
Um die Dinge in die richtige Perspektive zu rücken, betrachten Sie ein einfaches Beispiel, aber in Wirklichkeit wäre die Struktur viel größer.
struct method
{
char name[32];
float temperature;
int duration;
};
Jedes Mal, wenn ich eine Methode erstelle, muss ich mir Sorgen machen, wenn ich vergessen habe, einen Wert festzulegen. Stellen Sie sich vor, ich vergesse, temperature
die Methode festzulegen und auf ein System anzuwenden, das jetzt einen zufälligen hohen Wert hat und Chaos verursacht. Oder ich habe vergessen einzustellen duration
und nun wendet sich die Methode für eine unbekannt hohe Dauer an.
Warum sollte ich die Verantwortung übernehmen, das Objekt jedes Mal zu initialisieren, anstatt seinen Konstruktor zu implementieren, der es garantiert?
struct
und darin class
besteht, dass die eine standardmäßig privat und die andere öffentlich ist.