array mit Zahlen füttern und sortieren
-
Wenn du die Parameter des Kopierkonstruktors und Assignment-Operators noch const machst und
clog
stattprintf
benutzt fände ich das ein erstklassiges Beispiel.
-
@Swordfish
naja die container machen das intern doch genauso, oder nicht? also abgesehen von "arbeitsersparnis", weil das schon jemand anderes gemacht hat, fällt mir da jetzt nichts auf.@Quiche-Lorraine sagte in array mit Zahlen füttern und sortieren:
@Wade1234
Ich glaube du hast RAII noch nicht ganz verstanden. Ein kleines etwas anderes Beispiel:naja sobald die jeweiligen anweisungsblöcke verlassen werden, verlieren m3, m2 und m1 ihre gültigkeit, wodurch der darin vorhandene string auch ungültig wird, was den aufruf des destruktors von string und dadurch die freigabe der ressourcen zur folge hat.
-
@Wade1234 sagte in array mit Zahlen füttern und sortieren:
naja die container machen das intern doch genauso, oder nicht? also abgesehen von "arbeitsersparnis", weil das schon jemand anderes gemacht hat, fällt mir da jetzt nichts auf.
Überleg mal was passiert wenn das zweite
new[]
wirft.
-
@Wade1234 sagte in array mit Zahlen füttern und sortieren:
@Swordfish
naja die container machen das intern doch genauso, oder nicht? also abgesehen von "arbeitsersparnis", weil das schon jemand anderes gemacht hat, fällt mir da jetzt nichts auf.Sie machen's auch garantiert richtig. Ich würde viel Geld darauf verwetten, dass du es nicht schaffen würdest, eine 100% korrekte Umsetzung zu implementieren.
-
ja das ist mir auch klar. aber das grundsätzliche verständnis sollte man schon haben, oder?
-
@Wade1234 sagte in array mit Zahlen füttern und sortieren:
ja das ist mir auch klar. aber das grundsätzliche verständnis sollte man schon haben, oder?
Wo ist denn hier das Verständnis? Bloßes Wissen um die Existenz bringt ja nichts, wenn die Schlüsselerkenntnis fehlt, wie man es korrekt benutzt. In dem Fall wäre es sogar besser, gar nichts von der Existenz gewusst zu haben, dann kann man es wenigstens nicht falsch machen.
new
gehört in eine ähnliche Schublade wielongjmp
. Jede Erklärung, die nicht erklärt, wie man es richtig benutzt, und dass man es so gut wie nie braucht, ist unvollständig.
-
@Wade1234 sagte in array mit Zahlen füttern und sortieren:
naja sobald die jeweiligen anweisungsblöcke verlassen werden, verlieren m3, m2 und m1 ihre gültigkeit, wodurch der darin vorhandene string auch ungültig wird, was den aufruf des destruktors von string und dadurch die freigabe der ressourcen zur folge hat.
@Wade1234
Jaein. Sobald beispielsweise m3 seine Gültigkeit verliert, wird der Destruktor aufgerufen. Dieser schreibt die Meldung "Block 3 ends after 1045 ms!". Nachdem der Destruktor fertig ist, verlieren m3.mMessage und m3.mStartPoint ihre Gültigkeit, s.d. auch deren Destruktoren aufgerufen werden. Der Destruktor von mMessage ruft bei mir übrigens _M_dispose() auf, was wohl den belegten Speicher freigibt.Ein Tipp: Nimm meinen Code, importiere diesen in einer IDE, setze Breakpoints bei den std::clog Anweisungen und debugge den Code. Das dürfte dir mehr helfen.
-
@Swordfish sagte in array mit Zahlen füttern und sortieren:
Nein, Himmeldonnerwetter nochmal. RAII + RDID !!
RRID
-
@hustbaer sagte in array mit Zahlen füttern und sortieren:
RRID
?
https://isocpp.org/blog/2015/01/the-rule-of-zero-glennan-carnie
-
Ah, interessant. Ich kannte das bisher immer nur unter RRID. Finde ich auch passender als RDID, obwohl RDID anscheinend deutlich häufiger verwendet wird. Mir Wurst, ich bleibe bei RRID.
EDIT: Nö, stimmt nicht. RRID wird doch mehr verwendet. Google
"c++" "raii" "rrid"
vs
"c++" "raii" "rdid"