Unterschied zwischen ofstream bla("hallo", parameter) und ofstream bla; bla.open(...)
-
Ist da überhaupt einer vorhanden?
-
hallo
das eine ist ein konstruktoraufruf mit parametern,
das andere ein aufruf des standardkonstruktors und danach ein methodenaufruf.also ein unterschied.
-
Nun gut Frage war nicht eindeutig
ist da ein performanter Unterschied bzw. bewirkt beides exakt das gleiche?
-
das eine sind zwei methodenaufrufe, das andere einer.
-
Mit anderen Worten: Es gibt keinen Unterschied wobei das erste schneller ist da nur eine Methode aufgerufen wird.
-
natürlich gibt es einen unterschied:
was macht der konstruktor? er "erbaut" die klasse.
es ist ein immenser unterschied, ob du beim erbauen schon die erstinitialisierung von membervariablen vornimmst, oder erst durch eine methode.
so long
-
Bei meiner genauer formulierten Frage "bewirkt beides exakt das gleiche?" gibt es keinen Unterschied mehr, denn schließlich bewirken beide das gleiche. Das sie das ANDERS machen ist mir klar.
-
na ja, für mich ist es was unterschiedliches.
ein konstruktoraufruf oder ein methodenaufruf über selector.
-
du kannst in beiden Fällen hinterher mit bla in der Datei rumpfuschen, insofern ist das Ergebnis dasselbe
-
schrieb:
Ist da überhaupt einer vorhanden?
kein unterschied für dein programm. (unter umständen ist das mit zwei funktionsaufrufen einen tick lahmer, aber unmessbar, da das dateihandlicht gleich ne million ticks braucht.)
vom stil her ist die sache mit open zu verabscheuen. RAII.
-
Ich bin mir sicher, dass 90% der STL Implementierungen im ofstream Konstruktor aufrufen
um die Datei zu öffnen um das wiederholte schreiben von Code und somit Fehlern
auszumerzen. Denn schließlich erwarten wir doch alle, dass die STL fehlerfrei ist