Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

26.02.2008, 15:28

Hmm ... was ist mit int(int const&) ? ;) (so zeigt es der VC++2008 TS)
Und nein bei einem Zeiger wird da kein Konstruktor aufgerufen und es ist nur aus vereinheitlichungs Gründen möglich, einen Zeiger so zu initialisieren.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

12

27.02.2008, 12:54

Das es für Zeiger keinen Konstruktor gibt ist klar. Ints(und alle anderen Std. Datentypen, wie z.b. float, char etc) besitzen auch keinen echten Konstruktor. ein int a(3) würde vermutlich nur den Befehl mov a, 3 erzeugen.(Speicherresservierung natürlich auch, aber die erfolgt ja bereits vor der Initialisierung).

Interessant ist noch, dass der Speicher der für Variablen auf dem Stack benötigt wird immer am anfang einer Funktion reserviert wird, lediglich der Konstruktor wird später aufgerufen.

Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

27.02.2008, 13:12

Zitat von »"Faule Socke"«


Interessant ist noch, dass der Speicher der für Variablen auf dem Stack benötigt wird immer am anfang einer Funktion reserviert wird, lediglich der Konstruktor wird später aufgerufen.


Im Grund wird garkein Speicher für auto Variablen "reserviert".
@D13_Dreinig

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

14

27.02.2008, 13:53

Jo da muss ich dir recht geben, war etwas ungeschikt formuliert.

Hier die berichtigung: Es wird einfach esp dekrementiert und an der Adresse auf die esp zeigt ein neuer wert hinterlegt. Also würde vermutlich folgender Befehl erzeugt werden:

Quellcode

1
push dword 0


Socke

// Edit: Hmm ich hab rechten scheiss verzapft. Die Parameter werden schon vom Aufrufer auf den Stack geschoben, was bedeutet, es macht sinn, gleich den richtigen wert zu auf den Stack zu schieben. Bei Objekten wird einfach der Wert des esp Registers um sizeof(Objekt) gesenkt und dann Der Konstruktor aufgerufen(Auch hier wird wieder ein push erzeugt).

Socke

Werbeanzeige