Håller på att lära mig c++. Jag har ett kodexempel som jag inte fattar. Koden ser inte korrekt ut, men för att svara på frågan: Tack för hjälpen. Jo, jag vet att det är ett fel i koden, det framgår av exemplet i boken, men de förklarade inte vad koden innebar, därför ställde jag frågan här... Jag är helnöjd med svaret. :-DKlassmallar
void remodel(string & str)
{
string * ps = new string(str);
str = ps;
}
Kan någon förklara koden för mig?
Vad är detta med parantes för ngt och varför(rad 3)
Hoppas på snabbt svarSv: Klassmallar
string * ps - deklarerar ps som en pekare till en string.
= - ger ps värden som står till höger.
new string(str) - gör en nytt string-objekt. Just "string(str)" innebär att du skickar str som argument till konstruktorn.
Detta betyder att du gör en kopia av den.
OBS:
1. Koden är fel. Du kan dels inte ge en referens ett nytt minnesområde, och dels inte tilldela pekare till strängar. Koden bör snarare börja så här:
void remodel(string &* str)
eller
void remodel(string *& str)
(kan inte komma på vad som är rätt...)
2. Koden ger upphov till en minnesläcka. Du skall ta bort pekaren med delete först.
3. Detta har ingenting att göra med klassmallar...
/Niklas JanssonSv: Klassmallar