struct vs. class?
-
wann sollte man eigentlich struct und wann class nutzen?
ich habe hier eine Klasse, bei der alle Methoden und Membervariablen public sind:
// Geometry Declarations class Vector { public: // Vector Public Methods Vector() { x = y = z = 0.f; } Vector(float xx, float yy, float zz) : x(xx), y(yy), z(zz) { Assert(!HasNaNs()); } bool HasNaNs() const { return isnan(x) || isnan(y) || isnan(z); } explicit Vector(const Point &p); #ifndef NDEBUG // The default versions of these are fine for release builds; for debug // we define them so that we can add the Assert checks. Vector(const Vector &v) { Assert(!v.HasNaNs()); x = v.x; y = v.y; z = v.z; } Vector &operator=(const Vector &v) { Assert(!v.HasNaNs()); x = v.x; y = v.y; z = v.z; return *this; } #endif // !NDEBUG Vector operator+(const Vector &v) const { Assert(!v.HasNaNs()); return Vector(x + v.x, y + v.y, z + v.z); } Vector& operator+=(const Vector &v) { Assert(!v.HasNaNs()); x += v.x; y += v.y; z += v.z; return *this; } ...macht es Sinn hier struct zu verwenden anstatt class? Sollte man struct nur verwenden wenn man keine Methoden/Konstruktoren hat?
spielt es überhaupt eine Rolle ob man hier struct oder class verwendet? Ist struct nur noch ein Überbleibsel aus C?
-
structundclassals Schlüsselwörter für Klassen sind bis auf die Default-Sichtbarkeit der Member und Basisklassen identisch.Ich verwende
structeigentlich nur für kleinere Datenbündel (mit öffentlichen Variablen und Konstruktoren), Funktoren und Metafunktionen. Für "richtige" Klassenclass.
-
Nexus schrieb:
structundclassals Schlüsselwörter für Klassen sind bis auf die Default-Sichtbarkeit der Member und Basisklassen identisch.Ich verwende
structeigentlich nur für kleinere Datenbündel (mit öffentlichen Variablen und Konstruktoren), Funktoren und Metafunktionen. Für "richtige" Klassenclass.Genau, bei struct is per default sprich ohne angaben von einem Zugriffsspezifierer alles public und bei class privat.
Das ist der einzige Unterschied.
Lg freeG
-
Ich denke er kennt den Unterschied wenn ich mir seinen Post so ansehe
. Er fragt wie man entscheidet wann welches sinnvoller ist. Wenn die Gegebenheiten wie in deinem Beispiel vorliegen, denke ich das es eine Geschmackssache ist, aber mal warten was die Experten dazu sagen
.
-
FruFru schrieb:
Er fragt wie man entscheidet wann welches sinnvoller ist.
Nexus hat es ja schon schön gesagt. Es bietet sich an, struct im Sinne des ursprünglichen struct aus C für Datensammlungen zu nutzen und class für das volle Programm mit Methoden usw. Finde ich zumindest logisch, letztlich kann es ja jeder machen, wie er will.
-
Wenn du kompatibel mit C seien möchtest nutz struct andernfalls class.
So seh ich das mal.
-
gamebuntu schrieb:
Wenn du kompatibel mit C seien möchtest nutz struct andernfalls class.
So seh ich das mal.Was heißt kompatibel? Entweder macht man C oder nicht.
-
gamebuntu schrieb:
Wenn du kompatibel mit C seien möchtest nutz struct
Bringt doch nix, sobald du nen Konstruktor definierst, oder eine Methode.
Außerdem: wieso kompatibel?? Schreibst du deinen C++-Code etwa so, dass ein C-Compiler ihn auch schluckt? Dann schreibst du C-Code. Ist ja, als würdest du sagen, dass man beim Java-Programmieren bloß aufpassen muss, dass er auch "PHP-kompatibel" bleibt.
