Klassen, structs, unions
-
-
Das hat man schneller ausprobiert als einen Post hierher geschrieben.
struct IST EINE class, nur mit default-public sollte doch eigentlich alles sagen. -
Die Member liegen in separaten Speicherstellen, Methoden existieren pro Klasse nur einmal (wäre ja Verschwendung, für jedes Objekt auch die Methoden eigens im RAM abzulegen...)
-
-
ok, vielen Dank schonmal.
Also gibt es eigentlich keinen großen Unterschied zwischen struct und class (außer bei der default Sichtbarkeit)?
Vielen Dank
lg, freakC++
-
freakC++ schrieb:
ok, vielen Dank schonmal.
Also gibt es eigentlich keinen großen Unterschied zwischen struct und class (außer bei der default Sichtbarkeit)?
Vielen Dank
lg, freakC++Nein.
-
drakon schrieb:
freakC++ schrieb:
ok, vielen Dank schonmal.
Also gibt es eigentlich keinen großen Unterschied zwischen struct und class (außer bei der default Sichtbarkeit)?
Vielen Dank
lg, freakC++Nein.
2 (zugegeben ziemlich kleine) würden mir noch einfallen ;P
bei der forward-deklaration kann man nicht beides mischenstruct foo; /*...*/ class foo{ /*...*/ }; //fail...bei templates kann man
classschreiben aber nichtstruct.
mehr sollte es aber nicht geben!?bb
-
unskilled schrieb:
2 (zugegeben ziemlich kleine) würden mir noch einfallen ;P
bei der forward-deklaration kann man nicht beides mischenstruct foo; /*...*/ class foo{ /*...*/ }; //fail...Sicher? - Mit Visual Studio geht das. Könnte sein, dass das ein Feature von Visual Studio ist, obwohl ich das normalerweise abgeschalten habe.. *nachschau*..Ja, sogar, wenn Spracherweiterungen aus sind, bekomme ich lediglich eine Warning. Bin jetzt aber zu Müde, um das noch im Standard nachzuschlagen.
- Aber ich hatte sowieso auch im Kopf, dass das mischen sogar erlaubt ist.OK. Das class bei den templates hat so ziemlich eine andere semantische Bedeutung.
Ich glaube ich hatte mal etwas von wegen alignmend oder padding gesehen, was bei struct und class anderst gehandhabt wird. Weiss aber nicht mehr genau, was es war.. Auf jeden Fall nicht von grosser Bedeutung.
-
Streng genommen sind in C++ sowohl
unionals auchclassundstructKlassentypen. Hier meine Meinung, was ungefähr wie einzusetzen ist:- In C++ kommt
unionkaum zur Geltung, da es nur mit PODs funktioniert, nicht gerade sehr typsicher ist und die Funktionalität eher selten gebraucht wird. In vielen Fällen existieren bessere Alternativen (ich meine jetzt nicht nurboost::variant). classhandhaben eigentlich alle C++-Programmierer als das, was man üblicherweise unter Klassen versteht (z.B. Kapselung, Konstruktoren/Destruktoren, Methoden, Vererbung, Polymorphie).structwird meist als reines Datenbündel eingesetzt, also ähnlich wie in C. Ich selbst füge immer Konstruktoren hinzu, um eine Initialisierung sicherzustellen. Andere typisch objektorientierte Features setze ich beistructs hingegen nicht ein.
- In C++ kommt
-
Das halte ich so ähnlich.
-
drakon schrieb:
unskilled schrieb:
2 (zugegeben ziemlich kleine) würden mir noch einfallen ;P
bei der forward-deklaration kann man nicht beides mischenstruct foo; /*...*/ class foo{ /*...*/ }; //fail...Sicher?
Bis gerade eben schon xD
Aber jz beim Testen hab ich auch nur noch die Warning - hab ich mich wohl wirklich geirrt, weil ich auf anhieb jz nix gefunden habe, wo steht, dass das nen problem geben würde...
vll hab ich ja morgen mal lange weile - dann guck ich mal im standard, ob ich iwas dazu find^^bb
-
Hey,
vielen Dank noch für die späte Hilfe. Ich persönlich habe noch nie mit unions gearbeitet und werde wahrscheinlich erstmal weiterhin mit struct und class herumtwerkeln.Bis bald!
lg, freakC++
-
Zugegeben. Ich habe bist jetzt union ausserhalb von Tests noch nie ernsthaft gebraucht..