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.
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 :x
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?
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)
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.
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.