Diverse Style-Fragen
-
1003*4 is ja nich viel :p
-
John Doe: Der Fall, dass Bar ein Array ist, wurde schon ausgeschlossen bzw. anders behandelt. Lies einfach den Thread von vorne.
-
Hi Bashar,
Um ne Variable mit nem Speicherbedarf von mehr als x KB zu erzeugen gibts auch andere Möglichkeiten als ein Array. Ich bin, wie du, auch der Meinung das der Stack die erste Adresse für Variablen ist. Aber ich hoffe es ist nicht so schlimm das ich darauf hingewiesen hab das der Platz nicht unbegrenzt ist, und man hin und wieder überlegen sollte ob der Stack wirklich der richtige Platz ist.
Deswegen halte ich den Hinweis aufgrosse Klassen...
für durchaus sinnvoll.
mfg JJ
-
John Doe schrieb:
Um ne Variable mit nem Speicherbedarf von mehr als x KB zu erzeugen gibts auch andere Möglichkeiten als ein Array.
Aber auch realistische Möglichkeiten? Wenn du in jeder Klasse immer alle Arrays auf dem Heap hast, dann beinhalten Klasse immer nur primitive Typen (Größe 1 bis 10 Byte) oder andere Klassen, du musst also verdammt viel tippen um auf solche Größen zu kommen ... Ich bezweifle dass solche Monsterklassen von einem durchdachten Design zeugen.
-
RHBaum schrieb:
Beispiele Timestamps, Flag-Typen, etc.
für Timestamps würde ich sogar eine Klasse nehmen
RHBaum schrieb:
Ausserdem findet man die stellen besser, wenn die typen nen eindeutigen namen haben.
jo
RHBaum schrieb:
SmartPointer verwenden !!!
Lokale Instantiierung und wertuebergabe (bei temporaeren objecten) / uebergabe per referenz (bei langlebigen objecten) ist Imho besserer C++ Stil als das zeiger geroedele
Wenn der Code aussieht wie der Sternenhimmel bei Nacht ( *******) dann sieht das ned wirklich nach C++ ausfull-ACK
John Doe schrieb:
Also mit "nie zu gross" wäre ich vorsichtig.
Ja, aber wenn die Klasse zu groß ist um auf den Stack gelegt zu werden, dann muss sie intern eben den Heap benutzen
-
mit "zu gross" meint ich ned, das es zu gross fuer den Stack wird, sondern dass die klasse (sprich die Member Variablen) so viel und gross werden, dass es eben unperformant wird.
ne simple 3D punkt klasse mit 3 doubles ist noch kein Problem, wenn man die bei jeder uebergabe kopiert.
Nen Konstrukt aus paar Namen (strings, zur einfachheit halber vielleicht statisch als array mit fester Groesse) und noch zigdutzend statusvariablen, dann wirds schon kritischer. In vielen faellen immer noch schnurz, in manchen aber schon relevant fuer die performance.Dort lieber nen Wrapper (oder smartpointer) schreiben, der das teim aufn heap construiert und nur den verweis aufn stack umherschiebt ...
Ciao ...
-
RHBaum schrieb:
Dort lieber nen Wrapper (oder smartpointer) schreiben, der das teim aufn heap construiert und nur den verweis aufn stack umherschiebt ...
verstehe ich nicht.
einfach referenzen nehmen und nicht immer rumkopieren.ein new dauert doch unendlich länger als ein allokation auf dem stack...
-
@Shade
einfach referenzen nehmen und nicht immer rumkopieren.
wenn mans kann .... logo.
nur wie machst du das in verbindung mit STL containern ?
Besipielsweise du willst members deiner klasse in nen set schreiben.das einfuegen einer instanz ist schon mal ... erzuegung aufn stack,
Kopieren aufn heap, durch das set selber ....was das set intern noch umherkopiert, mag ich lieber ned wissen :p
wuerdest es mit zeiger machen, wurdest gleich auf dem heap bauen, die kopien wuerden sich nur auf den Zeiger beziehen .... aber zeiger sind poese !
Ciao ...
-
RHBaum schrieb:
@Shade
was das set intern noch umherkopiert, mag ich lieber ned wissen :pwird nix umkopiert, nurn paar zeiger umgesetzt :p
-
--- 8< 8< 8< 8< --- *scha-nipp* ---- 8< 8< 8< 8< ----
EDIT: Man sollte sich beim Schreiben nicht zuviel Zeit lassen.