new int(1);
-
Mein Programm besteht aus mehreren Klassen, von der Jede in einer eigenen Datei steht und jede eine header-datei hat.Ausserdem gibt es eine datei mit dem main-Programm.
Ich möchte nun in einer klasse "tabelle" ein Element "einselement" machen, dass immer gleich ist. Das habe ich in der header-datei als
static tabelle einselement;
realisiert. Der konstruktor von tabelle braucht ein int und ein int*.das sind die Elemente von tabelle.Um also diese tabelle "einselement" zu initialisieren, mache ich in der .cpp-datei, in der alle member-funktionen stehen (nicht bloss die namen der funktionen)
*int eins = new int(1);
tabelle tabelle::einselement = tabelle(0,eins);
Soweit ich das getestet hab, funktionierts. Aber ich verstehe nicht ganz, was das genau macht.
Was macht new int(1). Ich weiss, dass Speicher für einen int auf dem Heap(Freispeicher) reserviert wird. Aber wo wird die 1 gespeichert? Dieses einselementr soll das ganze Programm lang gleich bleiben und von allen anderen Klassen zugänglich sein (ist public). Wenn jetzt die 1 auf dem Stack liegt, dann wäre der Inhalt vom Pointer doch evtl. mal falsch?
-
new int(1) reserviert platz für eine int-Variable im Speicher , initialisiert diesen Platz mit dem Wert in Klammern,also 1 , und gibt einen Zeiger auf die Speicheradresse zurück..dieser Speicherplatz irgendwo in den Tiefen des Comps wird erst dann freigebene wenn du auf irgendeinen Zeiger der auf die Adresse zeigt delete anwendest.