webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Programmering & Utveckling > C/C++

C/C++ Diskussioner om programmeringsspråken C och C++.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2002-04-16, 21:48   #1
Alpha II
Medlem
 
Registrerad: 2000-05-20
Ort: Hudiksvall
Inlägg: 2 579
Lösningar: 191
Är struct och class samma sak? isf varför använder man struct?
Alpha II besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 21:51   #2
SPiN
Medlem
 
Registrerad: 2000-03-12
Ort: Göteborg
Inlägg: 5 832
Lösningar: 179
leende

För att uttrycka det alltför lätt, så kan man nästan säga att struct:ar är små klasser. De kan lagra variabler, men är långt ifrån så dynamiska och intelligenta som klasser. De kan inte ha några metoder, inte ärva och inte bli ärvda.
__________________
"Knock off the hippie shit, strap on a helmet and start shooting. This is Malibu, baby! I want you to storm that beach like it's fuckin' Normandy!"
SPiN besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 21:51   #3
PeW
Medlem
 
Registrerad: 2000-06-20
Inlägg: 6 839
Lösningar: 1124
Citat:
Var ligger felet........ spelar det någon roll i vilken årdening headerfilerna ligger i
1: Vart felet ligger är svårt att säga men tydligen vet den inte vad str är för något i den koden. Visa mer kod..

2: Nej, det ska inte spela nån roll om du gjort dina egna headers att vara oberoende av vad som inkluderas i övrigt.
PeW besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 21:53   #4
Alpha II
Medlem
 
Registrerad: 2000-05-20
Ort: Hudiksvall
Inlägg: 2 579
Lösningar: 191
försöker lära mig c++ med en några år gammal bok, i den står det att man inte ska använda struct utan class och att det är exakt samma sak fast ett nytt namn, stämmer det? om inte så är det ju inte den enda felaktiga saken i den boken
Alpha II besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 21:55   #5
PeW
Medlem
 
Registrerad: 2000-06-20
Inlägg: 6 839
Lösningar: 1124
Citat:
För att uttrycka det alltför lätt, så kan man nästan säga att struct:ar är små klasser.
Ja - det var verkligen alltför lätt

En struct är en container av data och blir så en egen datatyp som innehåller andra datatyper.

En klass är mycket mer flexibel och i objektorienterade sammanhang något man gömmer och kapslar in data och egenskaper i. Väldigt användbart
PeW besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 21:56   #6
SPiN
Medlem
 
Registrerad: 2000-03-12
Ort: Göteborg
Inlägg: 5 832
Lösningar: 179
leende

Nej, en klass och en struct är inte samma sak. Beroende på vad du ska använda dina klasser till, kan ibland en struct kanske vara ett bättre alternativ. T.ex. om du inte behöver använda metoder och objektorientering.

Ang. Honkens fel, kan det inte vara så att du har glömt att inkludera string-headern?
__________________
"Knock off the hippie shit, strap on a helmet and start shooting. This is Malibu, baby! I want you to storm that beach like it's fuckin' Normandy!"
SPiN besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 21:58   #7
PeW
Medlem
 
Registrerad: 2000-06-20
Inlägg: 6 839
Lösningar: 1124
Citat:
om inte så är det ju inte den enda felaktiga saken i den boken
Problemet med nybörjarböcker är att de i ett pedagogiskt försök bäddar för missförstånd.
Man kan använda klasser som struktar, men tyvärr bidrar den stilen till att koden blir mer C - mässig än OOP

Ska man lära sig C++ är det bättre att från början lära sig OOP och allt vad det innebär... (iaf min åsikt)
PeW besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 21:58   #8
SPiN
Medlem
 
Registrerad: 2000-03-12
Ort: Göteborg
Inlägg: 5 832
Lösningar: 179
leende

Citat:
En struct är en container av data och blir så en egen datatyp som innehåller andra datatyper.
Japp, men en klass blir väl också en egen datatyp? Är inte så hemma på C++, men jag chansar lite.
__________________
"Knock off the hippie shit, strap on a helmet and start shooting. This is Malibu, baby! I want you to storm that beach like it's fuckin' Normandy!"
SPiN besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 21:59   #9
PeW
Medlem
 
Registrerad: 2000-06-20
Inlägg: 6 839
Lösningar: 1124
Jovisst. Men på ett objektorienterat vis

Det är inte så stor skillnad på Java och C++ när det gäller OOP
PeW besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 22:00   #10
SPiN
Medlem
 
Registrerad: 2000-03-12
Ort: Göteborg
Inlägg: 5 832
Lösningar: 179
leende

Nej, OOP är ju alltid OOP!

Men du kan väl medge att jag har lite rätt för att göra mig glad?
__________________
"Knock off the hippie shit, strap on a helmet and start shooting. This is Malibu, baby! I want you to storm that beach like it's fuckin' Normandy!"
SPiN besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 22:02   #11
PeW
Medlem
 
Registrerad: 2000-06-20
Inlägg: 6 839
Lösningar: 1124
OK
PeW besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 22:04   #12
PeW
Medlem
 
Registrerad: 2000-06-20
Inlägg: 6 839
Lösningar: 1124
Fast en struct är statisk.... en klass är sju tusan så mycket mer användbar
PeW besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 22:06   #13
SPiN
Medlem
 
Registrerad: 2000-03-12
Ort: Göteborg
Inlägg: 5 832
Lösningar: 179
Det var ju det jag sa tidigare!
Citat:
De kan lagra variabler, men är långt ifrån så dynamiska och intelligenta som klasser. De kan inte ha några metoder, inte ärva och inte bli ärvda.
Klasser är dynamiska och objektorienterade samtidigt som struct:ar inte är det.

__________________
"Knock off the hippie shit, strap on a helmet and start shooting. This is Malibu, baby! I want you to storm that beach like it's fuckin' Normandy!"
SPiN besöker inte forumet just nu   Svara med citat
Äldre 2002-04-16, 22:08   #14
PeW
Medlem
 
Registrerad: 2000-06-20
Inlägg: 6 839
Lösningar: 1124
...
Jag gillade bara inte att man la klasser i samma stack som structar
PeW besöker inte forumet just nu   Svara med citat
Äldre 2002-04-17, 02:02   #15
Swey
Medlem
 
Registrerad: 2000-04-06
Ort: Stockholm
Inlägg: 2 000
Lösningar: 1535
struct vs. class

En struktur har olika egenskaper i C och i C++.
I C finns det inga klasser. Där är en struktur endast ett antal variabler som kan manipuleras direkt utanför strukturen.

I C++ däremot, är en struktur samma sak som en klass med ett par undantag. Bl.a.: En klass har standard-skyddet private; Strukturens standard-skydd är public. Du kan fortfarande ändra skydd på samma sätt som i en klass; En struktur kan initieras direkt, till skillnad mot en klass som måste ha en konstruktör.

Exempel:
struct {int d;} s = {10}; // OK
class {int d;} c = {10}; // Fel

Det finns säkert fler skillnader, men detta är de viktigaste. En struktur är att föredra för enkla datasamlingar som kan initieras utan kod. Måste kod köras vid initiering är en klass ett bättre alternativ.

Med reservation för att jag missuppfattat det hela.
__________________
- Marcus
Swey besöker inte forumet just nu   Svara med citat
Äldre 2002-04-17, 09:00   #16
PeW
Medlem
 
Registrerad: 2000-06-20
Inlägg: 6 839
Lösningar: 1124
glimten i ögat ... delade upp den gamla tråden...

... så att struct-diskussionen hamnade här ist

Den viktigaste skillnaden är att klasser byggs med egna egenskaper (metoder) som då ingår i den datatypen (objektstypen) och att till gömma data / internt beteende. Det ska inte behöva vara av exakt intresse hur en klass är uppbyggd för den som implementerar denna i sin miljö. En blomma är alltid en blomma och en bil är alltid en bil och de ska bara kunna användas på ett visst sätt. Klasser är dynamiska efter dess egenskaper, en struct är bara en komplexare variant av primitiv datatyp.

Sen kan man använda sig av en klass för att lagra data som i en struct.
PeW besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Programmering & Utveckling > C/C++

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är av
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 15:05.


Powered by: vBulletin Version 3.8.6
Copyright © webForum