Wenn wir sagen, dass der default constructor
der Konstruktor ohne Parameter ist, können wir auch sagen, dass der vom Compiler erzeugte Konstruktor auch ein default constructor
?
Danke.
Ein Standardkonstruktor ist einer, der ohne Argumente aufgerufen werden kann.
C ++ 98 §12.1 / 5 :
Ein Standard -Konstruktor für eine Klasse
X
ist ein Konstruktor vonX
, der ohne ein Argument aufgerufen werden kann. Wenn für die KlasseX
kein benutzerdeklarierter -Konstruktor vorhanden ist, wird implizit ein Standardkonstruktor deklariert.
Der Standardkonstruktor ist ein Konstruktor, der ohne Argumente genannt wird. Das ist also entweder ein Konstruktor, der keine Argumente hat, oder ein Konstruktor, dessen Argumente alle Standardwerte haben.
Aber ja, der Compiler erzeugt einen Standardkonstruktor, wenn Sie keine anderen Konstruktoren zur Verfügung stellen.
Empfohlene Lektüre: Ссылка .
Grundsätzlich ist ein Standard-Ctor ein Ctor mit Nein-Argumenten.
Bitte beachten Sie, dass der Compiler im folgenden Fall keinen Standardwert generiert:
%Vor%Grund dafür, dass der Compiler keine Notwendigkeit sieht, den vom Programmierer bereitgestellten Zeiger zu initialisieren. Es ist die Verantwortung des Programmierers, den Standard-Ctor korrekt zu schreiben und zu initiieren.
Wenn Sie andererseits eine virtuelle Funktion innerhalb der obigen Klasse schreiben, erzeugt der Compiler definitiv einen Standard-Ctor (aber initialisiert den iHahaptr-Zeiger für Sie nicht). Außerdem wird ein solcher ctor nur erzeugt, wenn eine Instanz dieses Objekts im Programm erzeugt wurde (andernfalls wird wiederum kein ctor vom Compiler erzeugt).
Dies sind die EINZIGEN 4 Bedingungen, unter denen der Compiler IMPLIZITLY default ctor generiert (falls nicht vom Programmierer bereitgestellt):
%Vor%In allen anderen Fällen generiert der Compiler keine Standard-Ctor.
Man kann nicht einfach sagen, dass "der vom Compiler erstellte Konstruktor auch ein Standardkonstruktor ist". Wenn keine Konstruktoren deklariert sind, generiert der Compiler einen Standardkonstruktor und einen Kopierkonstruktor (und möglicherweise einen Verschiebungskonstruktor, wenn wir hier C ++ 0x sprechen). Wenn Sie nur "den vom Compiler erstellten Konstruktor" erwähnen, sprechen Sie eigentlich von mindestens zwei Konstruktoren gleichzeitig. Man kann also nur sagen, dass "der Standard -Konstruktor, der vom Compiler erstellt wird, auch ein Standardkonstruktor ist", aber das klingt nach etwas, was Capt. Obvious sagen würde.
Tags und Links c++ default-constructor