Ich habe in einigen Artikeln gelesen, dass es in Java etwas namens Initializing blocks gibt; wo wir einige Initialisierungszuweisungen durchführen können, wenn die Klasse geladen oder eine Instanz erstellt wird.
%Vor%Abgesehen von Methoden und Konstruktoren sind Initialisierungsblöcke der dritte Platz in einem Java-Programm, in dem Operationen ausgeführt werden können.
Ich frage, ob es solch ein Paradigma in C ++ gibt? Danke.
Es muss darauf hingewiesen werden, dass es in Java zwei verschiedene Formen von Initialisierungsblöcken gibt. Der bare {...}
-Block, ohne das Schlüsselwort static
, ist nur ein bisschen Compiler-Swizzling - der Text im Block wird an die Front aller Konstruktoren angehängt, die definiert sind - es wird kein separates Code-Segment generiert. Ein Block, der static {...
beginnt, ist andererseits ein statischer Initialisierungsblock und eine (halb-) richtige Prozedur an sich (benannt, nicht überraschend, "statisch").
Der static
-Block wird nur einmal sofort (mit ein paar Vorbehalten) ausgeführt, nachdem die Klasse geladen wurde. Der nicht statische Initialisierer wird (aufgrund der Tatsache, dass er in die Konstruktoren kopiert wird) jedes Mal ausgeführt, wenn ein Konstruktor ausgeführt wird, und ist daher im Allgemeinen für statische Initialisierung ungeeignet.