Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Auswertungsreihenfolge

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.05.2011, 22:06 Uhr
banshee



Hallo,

in welcher Reihenfolge wird denn sowas ausgewertet:
C++:
Iterator children =
dag.get(v).iterator();


Gehe ich recht in der Annahme, dass zuerst v evaluiert wird, der Compiler sich anschließend an der Aufrufskette dag.get.iterator entlanghangelt und das ganze in children gepackt wird oder funktioniert es ander? Denkbar wäre auch, dass er z.B. erst Platz für children reserviert, anschließend schon das dag-Objekt evaluiert und zurückstellt bis v evaluiert ist usw.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.05.2011, 23:58 Uhr
ao

(Operator)


1. Anlegen von Speicher für children (auf dem Stack).
2. Am Objekt dag die Methode get aufrufen (mit Argument v). Das Rückgabe-Objekt temporär speichern
3. An diesem Objekt die Methode iterator aufrufen. Rückgabeobjekt speichern.
4. Konstruktor von Iterator für das Objekt children aufrufen, mit dem Objekt aus 3. als Argument.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.05.2011, 00:05 Uhr
0xdeadbeef
Gott
(Operator)


Es gibt Sequenzpunkte nach der Auswertung aller Argumente eines Funktionsaufrufs und nach der Kopie des Rückgabewerts. Ein Objekt, dessen Methode aufgerufen wird, gilt hier als Argument. Das bedeutet: In einem Ausdruck

C++:
foo().bar(baz()).qux();


werden foo() und baz() vor dem Aufruf von bar() ausgewertet, aber in welcher Reihenfolge ist nicht spezifiziert. bar wird aufgerufen, bevor qux aufgerufen wird, weil sein Rückgabewert ein Argument zu qux ist. Wann Speicher für children auf den Stack gelegt wird, ist ebenfalls nicht spezifiziert; es ist durchaus üblich, das bereits beim Eintritt in die Funktion zu tun.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: