Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

05.02.2012, 16:25

Stell dir ein struct einfach als eine selbstgebastelte Variable vor die etwas einfacher zu handhaben ist als eine Klasse (vor allem braucht man kein new).

Auch bei Klassen braucht man kein new. Das ist sicherlich kein Merkmal speziell für Klassen, Structs oder native Datentypen!
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

12

05.02.2012, 18:05

Zitat

Auch bei Klassen braucht man kein new. Das ist sicherlich kein Merkmal speziell für Klassen, Structs oder native Datentypen!


Ich meinte das jetzt eher von der Nutzung her, man übergibt ja auch Zeiger und nicht die ganze Klasse... Worum es mir ging ist eher das "Feeling" das ich quasi mit einer normalen Variable arbeite die noch den ein oder anderen Zusatz bekommt.

Auf jeden Fall ist es oft angenehmer structs zu verwenden. Das muss aber jeder für sich selbst wissen weils letztendlich sowieso keinen Unterschied macht (für das fertige Programm).

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

13

05.02.2012, 20:00

Es ist auch nicht wirklich angenehmer structs zu benutzen. Und genauso zählt auch das Argument nicht, dass man Klassen normal ja als Zeiger übergibt. Du meinst, dass man Klassen oft als Zeiger übergibt, da Klassen schnell groß werden und so nicht so viel neuer Speicher bei der Übergabe angelegt werden muss. Wie hier aber schon mehrfach geschrieben wurde, gibt es keinen großen Unterschied zwischen Klassen und structs, weshalb man genauso gut ein großes struct bauen kann, bzw kleine Klassen. Ob ich jetzt

C-/C++-Quelltext

1
class point {public:    int x;  int y;};

oder

C-/C++-Quelltext

1
struct point {  int x;  int y;};

schreibe, macht keinen großen Unterschied. Und ob ich jetzt Getter und Setter haben möchte oder nicht macht da auch keinen Unterschied. Die Sache ist die, dass viele structs zur einfachen Datenzusammenfassung benutzen, wie ihr selbst schon geschrieben habt und Klassen dann für größere Objekte mit Logik benutzen. Das hat sich halt bei vielen so eingebürgert, wirkliche Gründe gibt es dafür aber eigentlich nicht;)
Und die Sache mit den Gettern und Settern. Das ist wieder eine der vielen Regeln der Objektorientierung. Man soll/will/muss/darf ja möglichst so viel an Logik und Wissen über ein Objekt verbergen. Die Schnittstelle sagt mir, dass der Getter XY einen int zurück liefert. Ob es intern dazu aber ein Attribut gibt und welchen Typ dieses Attribut hat, weiß ich aber nicht. Dazu kommen natürlich so Geschichten wie Werte überprüfen. Wie sinnvoll das alles ist darüber lässt sich wie immer streiten;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

05.02.2012, 20:06

Zitat

Auch bei Klassen braucht man kein new. Das ist sicherlich kein Merkmal speziell für Klassen, Structs oder native Datentypen!


Ich meinte das jetzt eher von der Nutzung her, man übergibt ja auch Zeiger und nicht die ganze Klasse...

Nein.

Man übergibt ohnehin nie Klassen, sondern Instanzen. Ob ich da nun eine Instanz einer Klasse by Value übergebe oder einen Struct ist dabei ohne Belang. Man kann Instanzen von Klassen dynamischen erstellen und Structs auch. Man kann beide by Value übergeben oder beide by Reference. Auch als Pointer ist bei beiden möglich und bei beiden genauso sinnvoll oder unsinnig. Wenn man an einer Stelle im Code eine Klassen-Instanz by refence übergibt, dann sollte man auch ein Struct mit den selben Membern by reference übergeben. Die Vor- und Nachteile sind identisch in dieser Hinsicht.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

15

05.02.2012, 22:09

Ja mein Gott ich weiß nicht wie ichs ausdrücken soll, ist ja auch egal.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

16

05.02.2012, 22:38

Ist nicht egal sondern Quatsch;) Hab schon mehrfach gehört, dass angenommen wird, struct wären weniger Overhead als Klassen, aber wie BlueCobold und andere vorher auch schon mehrfach geschrieben haben, ist das alles Quatsch und Fehlwissen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige