Ab wann lohnt sich eine Klasse
-
ja klar, structs sind default private und wenn du nur zwei methoden hast, brauchst du nicht unbedingt einen ctor. dh am ende auch weniger overhead.
-
meine default public, bin etwas verpeilt
-
__A schrieb:
ja klar, structs sind default public und wenn du nur zwei methoden hast, brauchst du nicht unbedingt einen ctor. dh am ende auch weniger overhead.
Seit wann brauchen Klassen einen Konstruktor?

-
__A schrieb:
ja klar, structs sind default private und wenn du nur zwei methoden hast, brauchst du nicht unbedingt einen ctor. dh am ende auch weniger overhead.
Quatschologe!
In C++ ist "struct == class", nur struct ist default PUBLIC (!). Außerdem bekommt auch ein struct einen Konstruktor. Genauso wie class automatisch welche generiert bekommt, wenn du keine eigenen angibst.Nur ist halt ein struct ohne eigene Methoden (wie du das wohl angedacht hast) sicherlich möglich, wenn du die Möglichkeit der Datenkapselung in C++ nutzen willst aber nicht nützlich. Member immer private und ansprechen über öffentliche Schnittstelle. Auch in Hinblick auf mögliche spätere Vererbung ist es einen Gedanken wert!
Sonst kann man gleich wieder C Programmieren gehen
-
Ich mein hier im Forum mal die Aussage gelesen zu haben "Eine Klasse macht dann Sinn wenn man mindestens zwei Objekte von ihr erstellt" und das scheint hier nicht der Fall zu sein. Alternativ könnte man die Variablen und die zwei Funktionen auch einfach in ein Namespace packen.
Wir sind ja nicht bei Java, wo alles in einer Klasse sein muss

-
freakC++ schrieb:
Zwar könnte ich einfach die Variablen global machen, doch dann könnte ich gleich Delphi progrmamieren...äh...dann wäre das nicht sehr schöner Stil
Hm... das verstehe ich nicht, auch in Delphi würde man Klassen anlegen und keine globalen Variablen. Deine Frage ist ja grundsätzlich für alle OO-Sprachen, die Klassen unterstützen.
-
Tobiking2 schrieb:
Ich mein hier im Forum mal die Aussage gelesen zu haben "Eine Klasse macht dann Sinn wenn man mindestens zwei Objekte von ihr erstellt" und das scheint hier nicht der Fall zu sein. Alternativ könnte man die Variablen und die zwei Funktionen auch einfach in ein Namespace packen.
Oder in eine namenlose Klasse.
-
Hallo zusammen,
@Marc++us: Das mit Delphi sollte ein kleiner Scherz sein, da ich diese Programmiersprache nicht sehr gerne hab' :p .
Auf structs möchte ich hier verzichten, da nicht alles public sein sollte. Es macht also Sinn, für beispielsweise zwei Methoden, die sich miteinander austauschen müssen und gleiche Variablen brauchen, eine Klasse anzulegen?
Vielen Dank
lg, freakC++
-
Es gibt auch für structs das keyword private...
Wenn sich etwas logisch zusammenschließen läßt, schließ es zusammen (zu einer Klasse/Strukt).
-
ok!
Aber structs sind doch einfach dafür, public zu sein. Was bringt es mir einen public Artikel einzuführen, um ihn dann wieder private zu machen
Ich glaube, dass ich einfach eine union mache 
Ne, ich mach eine Klasse.
lg, freakC++
-
@C Freak: Keine Ansgt, ich gehe noch in die Schule

lg, freakC++
-
Tobiking2 schrieb:
Ich mein hier im Forum mal die Aussage gelesen zu haben "Eine Klasse macht dann Sinn wenn man mindestens zwei Objekte von ihr erstellt" und das scheint hier nicht der Fall zu sein. Alternativ könnte man die Variablen und die zwei Funktionen auch einfach in ein Namespace packen.
Wir sind ja nicht bei Java, wo alles in einer Klasse sein muss

Und was ist mit Singletons? Das ist durchaus ein Pattern, was häufig Sinn macht. Dann gibt es tatsächlich nur eine Instanz.
-
tntnet schrieb:
Und was ist mit Singletons? Das ist durchaus ein Pattern, was häufig Sinn macht.
Das häufig unterschreibe ich nicht, auch wenn ich gelegentlich selbst davon gebrauch mache. Ob ein Singleton gutes oder schlechtes Design ist, lässt sich beliebig lange diskutieren (Ich persönlich verwende sie, aber versuche die Anzahl gering zu halten).
-
freakC++ schrieb:
Es macht also Sinn, für beispielsweise zwei Methoden, die sich miteinander austauschen müssen und gleiche Variablen brauchen, eine Klasse anzulegen?
Meines Erachtens machen Klassen dann Sinn, wenn es sich um logische Einheiten handelt - und gleichzeitig möglichst nicht das Prinzip verletzt wird, das eine Klasse auch nur eine Aufgabe erfüllen sollte.
Anderseits ist die Grenze auch fließend, ich glaube das Herb Sutter oder Scott Meyer in einen seiner Bücher mal gesagt hat, wann man eine Methode und wann eine Funktion vorziehen sollte.
-
l'abra d'or schrieb:
Nur ist halt ein struct ohne eigene Methoden (wie du das wohl angedacht hast) sicherlich möglich, wenn du die Möglichkeit der Datenkapselung in C++ nutzen willst aber nicht nützlich. Member immer private und ansprechen über öffentliche Schnittstelle. Auch in Hinblick auf mögliche spätere Vererbung ist es einen Gedanken wert!
Sonst kann man gleich wieder C Programmieren gehen
Das würde ich so nicht verallgemeinern. Es gibt durchaus Datentypen, bei denen sich eine Kapselung nicht lohnt. Für diese nehme ich persönlich
structohne Zugriffsspezifizierer und Memberfunktionen (ausser Konstruktoren).Beispiel Vektorklasse. Da greift man recht oft direkt auf Member zu, und zusätzliche Getter/Setter würden den Code ohne wirklichen Nutzen hässlich machen.
Vector v(2.f, 3.f); Vector w(4.f, -1.f); // 1 v.x += 1.5f * w.x; // 2 v.SetX(v.GetX() + 1.5f*w.GetX());
-
Nexus schrieb:
Beispiel Vektorklasse. Da greift man recht oft direkt auf Member zu, und zusätzliche Getter/Setter würden den Code ohne wirklichen Nutzen hässlich machen.
Wobei solche hässlichen Vektorenklassen leider gar nicht so selten sind.