2016-07-29 21 views

Antwort

2

Denken Sie an einen Fall, wenn die default constructor wird nicht durch den Compiler zur Verfügung gestellt werden. Dann können Sie = default verwenden, um dem Compiler mitzuteilen, einen Standardkonstruktor für Sie trotzdem zu erstellen.

Andernfalls (und es sei denn, Sie benötigen einen speziellen Standardkonstruktor) gibt es keinen Grund, einen Standardkonstruktor in irgendeiner Weise anzugeben (mit oder ohne = default).

In Ihrem Beispiel ist kein "expliziter" = default Konstruktor erforderlich. Es ist mehr eine Frage des Stils.

+0

Danke, ja in diesem Szenario verstehe ich den Nutzen davon. Aber wenn ich wirklich nur über Foo struct verfüge, was wird nun als klarer erachtet, das ctr auszulassen oder genauer zu sein und es als Default zu deklarieren? – user695652

2

Wie erwähnt here, ein Standardkonstruktor wird nicht erstellt, wenn Sie einen Konstruktor mit Argumenten erstellen. In diesen Fällen generiert das Schlüsselwort default das default constructor für die Klasse.

Überlegen Sie jedoch sehr genau, ob das Objekt, mit dem Sie es zu tun haben, einen Standardkonstruktor haben sollte; das heißt, wenn die Standardinitialisierung anderer Objekte das Richtige ist. Denken Sie daran, dass POD Mitglieder standardmäßig nicht initialisiert werden und möglicherweise keine Daten zum Abfall enthalten, ohne data member initalisers.

2

Dies scheint eine meinungsbasierte Frage zu sein. Es scheint jedoch, dass die erste Option am häufigsten verwendet wird, da die zweite Option ausführlicher ist, und Programmierer neigen dazu, die Standardeinstellung nicht zu verwenden, es sei denn, eine Standardoperation muss delete ed sein.

0

Wenn Sie einen expliziten nicht standardmäßigen Konstruktor angeben, wird der Compiler standardmäßig nicht bereitgestellt. In diesem Fall können Sie das Standardschlüsselwort verwenden, um den Compiler zur Bereitstellung zu zwingen.

Der andere Fall ist, wenn Sie sicherstellen möchten, dass Ihr Standardkonstruktor eine bestimmte Schutzstufe hat. Beispielsweise möchten Sie möglicherweise sicherstellen, dass Ihr Standardkonstruktor privat oder geschützt ist.

Verwandte Themen