Halloj!
Jag undrar om det finns någon motsats till C++'s struct i Java? Eller får man skriva klasser o hålla på för att få det någorlunda lika?
------------------
---
/* LilleSkutt */
6 svar · 433 visningar · startad av LilleSkutt
Halloj!
Jag undrar om det finns någon motsats till C++'s struct i Java? Eller får man skriva klasser o hålla på för att få det någorlunda lika?
------------------
---
/* LilleSkutt */
Just precis, det finns inga structar utan du får köra med en klass.
Kan inte låta bli att nämna att C# har structar, lite onödigt kan tyckas men skillnaden mot en klass är att den automatiskt blir en value typ dvs skickas inte som en referens typ när man skickar den som argument till en metod.
Hmm... Varför? Jag menar, det må ju bli en grym overhead om man skickar allt sådant genom värdekopiering istället för pekare.
------------------
Butch: min hjälte. http://www.choppingblock.org/
Allt ? Ingen tvingar dig att använda structar men eftersom det verkar vara en av de saker som C och C++ programmerare saknar mest så bestämde sig MS för att lägga in det.
Sen hur det optimeras i kompilerad kod har jag ingen aning om, value typer ska väl knappast ha nån overhead.
Om man ska citera boken jag har om C#:
"Structs are intended to declare simple composite data structures, and because of this they are value types. This means they are directly created on the stack and not accessed through references"
Sen om det behövs eller inte kan man ju diskutera, har aldrig känt behovet att använda dem hitils.
[Redigerat av plundin den 14 jul 2001]
Att skicka en hel struct/objekt till en metod dröjer betydligt längre än att sända en pekare. Säg att vi har en struct på sisådär 32 bytes. Du måste nu stoppa upp 28 bytes mer på stacken jämfört med en pekare på 4 bytes. Ännu värre blir det med lite grövre saker. Osmart? Ja.
För övrigt: structar är helt onödiga när man har klasser, så jag fattar inte varför någon skulle vilja använda sig av en struct iställer för en klass.
------------------
Butch: min hjälte. http://www.choppingblock.org/
Varför inte göra en klass som funkar som en struct, dvs bara publika medlemsvariabler, om man nu vill ha grötiga och osmidiga system? ;)
------------------
All things serve the Beam!
Hej!
Vill du ha något nästan lika är det väl bättre att du ärver egenskaperna från en super- eller subklass och bara lägger till den lilla ämdring som du vill ha. har kanske fattat dig fel?
mvh Jörgen
------------------
*** Var går gränsen mellan långa kortbyxor och korta långbyxor? ***